跳到主要內容

dead_code_on_catch_subtype

死程式碼:這個 on-catch 子句不會被執行,因為 '{0}' 是 '{1}' 的子型別,因此在此之前就已經被捕獲了。

描述

#

當分析器發現一個 catch 子句無法執行時,會產生此診斷,因為該子句位於捕獲相同型別或該子句型別的超型別的 catch 子句之後。選擇第一個匹配丟擲物件的 catch 子句,而之前的子句總是匹配高亮顯示的子句能夠匹配的任何內容,因此高亮顯示的子句永遠不會被選中。

示例

#

以下程式碼會產生此診斷

dart
void f() {
  try {
  } on num {
  } on int {
  }
}

常見修復方法

#

如果該子句應該可被選中,則將其移到通用子句之前

dart
void f() {
  try {
  } on int {
  } on num {
  }
}

如果該子句不需要可被選中,則將其移除

dart
void f() {
  try {
  } on num {
  }
}