web-dev-qa-db-ja.com

将来のキャッチエラーを使用してエラーをキャッチして別のタイプを投げる

このタイプのエラー処理と抽象化が間違った方法で行われているかどうかわかりません。

Future<void> _refresh() {
  return Future(() => throw someError)
       .catchError((error) {
         // maybe do something here
         throw abstractedError; //or even the same error
      });
 _

それに応じてそれを使うために別の場所で可能な限り:

// in a widget/another place

void doSomething() { 
   _refresh()
     .then((_) => bla())
     .catchError((error) {
      //showSomeAlert() or handleSomething()
  });
}
 _
11
Durdu

Errorをキャッチできるようにするには、インポート_Dart:async_を追加する必要があります。まず、trycatchブロックを使用してコードをラップします。

_ try {
    Http.Response response = await Http.get(
      url,
      headers: headers,
    )
        .timeout(const Duration(seconds: 1));
  } on TimeoutException catch (e) {
    print('Timeout');
  } on Error catch (e) {
    print('Error: $e');
  }
_
0