【Flutter/Dart】try-catch文|エラーが発生したら別処理を実行(例外処理)

今回はtry-catch文を使って例外処理する方法を紹介します。

「例外処理」では想定外の事象(例外)が発生した際に実行される処理を指定できます。

\ 世界最大級のオンライン学習サービス /

目次

try-catch文の基本形

try {
  //例外が発生し得る処理
} catch (e) {
  //例外が発生したら実行する処理
}

上記コードはtry-catch文の基本形になります。

tryで記述した処理で例外が発生した場合はcatchの処理が実行されます。またprint(e)で発生した例外の詳細を確認できます。

DartPadを実行すると例外が発生しprint(e)NoSuchMethodErrorの例外が発生したと出力されます。

特定の例外に対して別処理を実行

try {
  //例外が発生し得る処理
} on Exception {
  //Exceptionが発生したら実行
}
int age = 15;

try {
  assert(age >= 18, '18歳未満です。');
  print('18歳以上です。');
} on AssertionError {
  print('「AssertionError」がスローされました。');
}

//出力
//「AssertionError」がスローされました。

trycatchだけを使用した場合、tryで発生した全ての例外に対して同じ処理を実行してしまいます。よって予め発生し得る例外が分かっている場合は特定の例外にのみ処理を指定することが可能です。

上記コードではassertでスローされた例外AssertionErroronでキャッチしています。

onで特定した例外を取得

int age = 15;

try {
  assert(age >= 18, '18歳未満です。');
  print('18歳以上です。');
} on AssertionError catch (e) {
  print('Error: ${e.message}');
}

on 例外 catch(e)で例外を取得できます。

上記コードではeAssertionErrorを取得しています。messageAssertionErrorのプロパティです。

特定したい例外が複数ある場合

try {
  //例外が発生し得る処理
} on Exception1 {
  //Exception1が発生したら実行
} on Exception2{
  //Exception2が発生したら実行
] catch(2){
  //Exception1とException2以外の例外が発生したら実行
]

複数の例外に対して処理を別々に実行したい場合はonを複数使用します。

一緒に読みたい

参考

  • URLをコピーしました!
目次