目次

avoid_catches_without_on_clauses

on句のないcatchを避けてください。

このルールはDart 2.0から利用可能です。

詳細

#

効果的なDartより

避けるべき: on句のないcatch。

on句のないcatch句を使用すると、予期しないエラーが発生しやすくなり、エラーがスローされず、したがって気づかれずに終わる可能性があります。

悪い例

dart
try {
 somethingRisky()
} catch(e) {
  doSomething(e);
}

良い例

dart
try {
 somethingRisky()
} on Exception catch(e) {
  doSomething(e);
}

いくつかの例外的なケースが許可されます。

  • catchの本体が例外を再スローする場合。
  • キャッチされた例外がFuture.errorCompleter.completeErrorFlutterError.reportError、または戻り値の型がNeverの任意の関数の引数に「直接使用」されている場合。
  • キャッチされた例外が新しいthrow式で「直接使用」されている場合。

これらの場合、「直接使用」とは、例外が関連するコード内(引数内など)で参照されることを意味します。たとえば、ラッパー例外をインスタンス化するために、関連するコードより前に例外変数が参照されている場合、その変数は「直接使用」されているとはみなされません。

使い方

#

avoid_catches_without_on_clausesルールを有効にするには、analysis_options.yamlファイルのlinter > rulesの下にavoid_catches_without_on_clausesを追加します。

analysis_options.yaml
yaml
linter:
  rules:
    - avoid_catches_without_on_clauses