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クラスの使い方:コンストラクタと主要メソッド解説マップ

コメント