improve cast error message

It would be better just `goto` jump to `Lfail` and then improve the error message for general cases.