跳到主要内容

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 {
  }
}