You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Dart抛出Exception未进入指定catch分支问题求助

问题原因及解决方法

你的代码里,breedMoreLlamas1函数中抛出的是Exception这个类型对象,而不是Exception类的实例。Dart的on Exception catch(e)分支只会捕获Exception类(及其子类)的实例,而不是Type类型的对象,所以这条分支不会触发,最终走到了无类型限制的catch(e)分支。

解决步骤

修改抛出异常的代码,将throw Exception;改为throw Exception();,这样抛出的是Exception类的实例,就能被on Exception catch(e)分支正确捕获:

try {
   breedMoreLlamas1();
} on OutOfLlamasException {
  // A specific exception
  buyMoreLlamas();
} on Exception catch (e) {
  // Anything else that is an exception
  print('Unknown exception: $e');
} catch (e) {
  // No specified type, handles all
  print('Something really unknown: $e');
}

void breedMoreLlamas1() {
  print('buyMoreLlamas_1');
  throw Exception(); // 这里改为抛出实例
}

修改后运行,就会输出buyMoreLlamas_1和Unknown exception: Exception,符合你的预期。

内容的提问来源于stack exchange,提问作者Konstantinos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 03:41:41