Dart Futureクラスのthen()メソッドについてメモ書き。
then()はFutureの実行結果を受け取るメソッド。
第1引数は受け取った戻り値に対する処理を記述する。第2引数は名前付きオプション引数「onError:」で、エラーメッセージとStackTraceの2つを受け取り例外処理を実行する。第2引数はオプション引数なので省略可能。
Dart公式は「Futureのコールバック処理をthen()メソッド、例外処理をcatchError()メソッドと分けて記述した方が可読性が高い」としているので、例外処理はcatchError()メソッドを推奨しているようだ。
例外処理の注意点については「Dart Futureクラス概要とコンストラクタ」を参照の事。

Dart Futureクラス概要とコンストラクタ
Futureは非同期処理を扱うためのクラス。非同期処理はasync関数で行う。
then()メソッドをコーディングで確認。
「test.txt」ファイルを読み込み、内容をprint()メソッドで出力する。
import 'dart:io';
void main() {
testFuture().then((value) {
print(value);
}, onError: (err, stck) {
print("Error:$err");
print("StackTrace:$stck");
});
}
Future<String> testFuture() async {
try {
var readTest = await File('test.txt').readAsString();
return readTest;
} catch (e) {
rethrow;
}
}実行結果。
ファイル内容が出力された。
TestThen1
TestThen2次に存在しないファイルを指定し、エラーを発生させる。
import 'dart:io';
void main() {
testFuture().then((value) {
print(value);
}, onError: (err, stck) {
print("Error:$err");
print("StackTrace:$stck");
});
}
Future<String> testFuture() async {
try {
var readTest = await File('no_test.txt').readAsString();
return readTest;
} catch (e) {
rethrow;
}
}実行結果。
📁 Dart Futureクラスの全体像・主要メソッド
Futureクラスの非同期処理や主要メソッド一覧は、以下の解説マップをご覧ください。
➔ Dart Futureクラスの使い方:非同期処理と主要メソッド解説マップ

コメント