🐥

例外処理について(dart)

2023/03/29に公開

DartではExceptionとErrorの型が例外としてスローされる。
基本的にErrorとそのサブクラスはプログラム・エラーであり、そのプログラムは修正が必要である。一方非エラーのExceptionは実行時エラーである。

例外の型を指定していないcatch文は、全てのExceptionとErrorをcatchする。

特定の例外型を指定していると、その型とそのサブクラスのみcatchする。

また、その他の例外はそのブロックでは捕捉されず、処理可能なブロックに捕捉されるまでコールスタックを伝搬していきます。

rethrowについて

rethrow文は同じ例外を再スローして、その上レベル(呼び出し元)のtryブロックに伝搬させるものである。
以下の例では、rethrowすることにより、最初にcatchしたdoSomethingメソッド内のcatch文とそれの呼び出し元のcatch文の両方でエラー内容を処理することが出来る。

どの範囲の例外を処理する?

It's generally a good practice to catch only the exceptions that you expect and can handle, and let other exceptions propagate up the call stack to be caught by higher-level error handling code. This can help you identify and fix bugs more easily, and avoid unexpected errors or behavior in your application.

Exceptionとtry-catch文について

Excptionはtryブロックの中以外でもthrow出来るが、それは望まれない。Exceptionが投げられると、その後の全てのコードは実行されない。

参考文献

https://www.cresc.co.jp/tech/java/Google_Dart2/language/exceptions/exceptions.html

Discussion