はじめに
なんとなく「便利だな」とは思いつつ、ノリで使っていた例外処理。
何が嬉しいのか少し掘ってみました。
例はApexですが、他の言語でも同じ嬉しさはあると思います。
結論
ドキュメントの言葉を借りると、
エラー処理を単純化できるから
というのが嬉しいポイント。
ここでいう「単純化」とは、僕なりに以下の意味だと解釈しています。
・記述量が少ない
・記述内容が脳に負担をかけない
例えば「エラーが発生したときは共通のエラー画面に飛ばしたい」とき、
例外処理のあるなしでどう変わるのか、見てみましょう。
例) 例外処理あり
private void method1(){
try{
this.method2();
}catch(Exception e){
// エラー画面に遷移する処理
}
}
private void method2(){
// NullPointerExceptionが発生するかもしれない処理
this.method3();
}
private void method3(){
// DmlExceptionが発生するかもしれない処理
}
上記のように書けば、
最上位のメソッドに例外処理を書いとくだけで、エラー画面に飛ばせます。
(記述量が少ない)
また、エラーの種類を考えなくてもcatchが捕まえて、エラー画面に飛ばしてくれます。
(記述内容が脳に負担をかけない)
例) 例外処理なし
private void method1(){
this.method2();
}
private void method2(){
// ① NullPointerExceptionが発生しそうなら、エラー画面へ飛ばす処理
// NullPointerExceptionが発生するかもしれない処理
this.method3();
}
private void method3(){
// ② DmlExceptionが発生しそうなら、エラー画面へ飛ばす処理
// DmlExceptionが発生するかもしれない処理
}
上記のように書くと、
①や②のように各メソッドにエラー画面へ飛ばす処理を書く必要があります。
(記述量が多い)
また、発生しそうなエラーを考えて、それに合わせた処理を書く必要があります。
しかも予想外のエラーが起こって、エラー画面へ飛ばすのが失敗するかもしれません。
(記述内容が脳に負担をかける)
まとめ
例外処理がないと、思った以上にコード書くのが大変になるんですね。
こうやって普段やっていることの意味を紐解くのは楽しいです。