Dart StreamクラスhandleError()メソッド

シェルスクリプト Dart

Dart StreamクラスのhandleError()メソッドについてメモ書き。

handleError()はStreamイベントのエラーをインターセプトするラッパーStreamを生成するメソッド。
引数としてonError関数を指定し、インターセプト時のコールバック処理を記述する。onError関数の戻り値はvoid型で、引数に「エラーオブジェクト」か、もしくは「エラーオブジェクト、スタックトレース」を受け取る。
handleError()は名前付きオプション引数(省略可)test:でインターセプトするエラー条件を記述できる。戻り値はbool型。test:を記述しない場合は全てのエラーがインターセプトの対象となる。
handleError()自体の戻り値はStream<T>型。元のStreamがブロードキャストであれば、ブロードキャストで返す。

コーディングで動作確認。
動作確認のため「i==3」の時に例外を発生させる。

void main() async {
  final stream = () async* {
    for (int i = 0; i < 5; i++) {
      if (i == 3) {
        throw "Error Test";
      }
      yield i;
    }
  }();
  // handleErrorでエラーをインターセプト
  stream.handleError(
    // 以下onError関数では第1引数にエラーオブジェクト、第2引数でスタックトレースを受け取っている
    (err, st) {
      print("handleErrorメッセージ:$err");
      print("handleErrorスタックトレース:$st");
    },
    test: (error) => error == "Error Test",
    // listenにエラー発生時の処理(onError:)を追加
  ).listen(print, onError: (e) {
    print("onError:$e");
  });
}

実行結果。
名前付きオプション引数test:で、エラーが「Error Test」の時にインターセプトするように条件を付与している。また、エラーオブジェクトとスタックトレース両方を出力している。

0
1
2
handleErrorメッセージ:Error Test



📁 Dart Streamクラスの全体像・主要メソッド
Streamクラスのコンストラクタや主要メソッド一覧は、以下の解説マップをご覧ください。
➔ Dart Streamクラスの使い方:コンストラクタと主要メソッド解説マップ

コメント

タイトルとURLをコピーしました