If you run sp_refreshview (and supposedly sp_refreshsqlmodule), and there is a syntax error in the code, due to the view being created in an earilier compatibility mode of SQL Server, and the call to sp_refreshview is in TRY-CATCH, the error message is suppresed and the CATCH handler is not invoked.
If you instead try old-fashioned error handling by checking return value and @@error, you find that neither this works. The return value is 0. (And the reason for that is really shameful, sp_refreshsqlmodule_internal include this code:
if @@error <> 0
This issue does not exist in SQL 2005.
The issue does not occur with binding errors, for instance when a column has been dropped from a table.