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
相关产品推荐
相关产品推荐

