プログラム学習室 http://studyhallweb.com/

Dart言語: エラー処理

try~catch

Dart言語でもエラー処理にtry~catchが使用できる。
任意の例外を発生させるthrowや、例外発生後も必ず処理をさせるfinallyなど、他の言語同様である。
				
import 'dart:io';

//ini読み込み
class C_Read {
  String sTopURL;
  String sTopDir;

  int read() {
    List<String> sReadFile = new List();
    try {
      File oFile = new File('ReadTest.txt');
      sReadFile = oFile.readAsLinesSync();  // この1行で読み込みは終了
      int i = 0;
      sReadFile.forEach((String s) {
        i++;
        if (i > 1000) throw new Exception('行数オーバー');
        if (s.length > 64) throw '文字数オーバー';
        print(s);
      });
      return 0;
    } on Exception catch(e) {
      // ファイルが無いなど、あらかじめDartで想定されたエラーのとき
      // new Exception を throw したとき(行数オーバーのとき)
      print('exception: $e');
      return -1;
    } catch(e) {
      // 単に throw したとき(文字数オーバーのとき)
      print('unknown: $e');
      return -2;
    } finally {
      print('エラーが発生してもここば実行');
    }
  }
}

void main() {
  int iErr = 0; // Error Nomber

  // ファイルを読み込み
  C_Read cRead = new C_Read();
  iErr = cRead.read();
  if (iErr < 0) exit(iErr); // エラーがはっせいしたらここで終了

  print('つづきの処理');
}
				
				
throw new Exception で投げたものは on Exception catch、単に throw したときは catch で捕獲できる。
finally は tryの処理が中断されても実行される。