Rails SyntaxErrorは通常のrescueだと例外キャッチができない件

58D32A08-D356-454F-B7EE-D6ACA6016082

Railsっていいよね。
今でもPoCプロジェクトではRailsを候補にあげる男です。

今回は、ERBテンプレートを使っていて出くわしたエラーとその解決策。

広告

rescueでキャッチできないコード

普通に書くならこんな感じ。

これだとERBレンダリングの際に、
通常のrescue=>eだとSyntaxErrorをキャッチできない。

NameError: uninitialized constantといったエラーは取得できるが、
SyntaxErrorはだめだった。

rescueでキャッチするコード

SyntaxErrorをキャッチする場合、
専用に例外を定義する必要があるので下記のように書く。

これで、500を起こさずにSyntaxErrorを処理できる。


じゃあねーーー。