2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Apex】例外処理は何が嬉しいのか

Posted at

はじめに

なんとなく「便利だな」とは思いつつ、ノリで使っていた例外処理。

何が嬉しいのか少し掘ってみました。

例は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が発生するかもしれない処理
}

上記のように書くと、

①や②のように各メソッドにエラー画面へ飛ばす処理を書く必要があります。
(記述量が多い)

また、発生しそうなエラーを考えて、それに合わせた処理を書く必要があります。
しかも予想外のエラーが起こって、エラー画面へ飛ばすのが失敗するかもしれません。
(記述内容が脳に負担をかける)

まとめ

例外処理がないと、思った以上にコード書くのが大変になるんですね。

こうやって普段やっていることの意味を紐解くのは楽しいです。

参考文献

Exceptions in Apex

2
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?