what's the difference `fail` <> `raise` ?