gpt4 book ai didi

dart - Dart 中 'catch(e)' 和 'on Exception catch(e)' 之间的区别?

转载 作者:行者123 更新时间:2023-12-03 04:24:21 27 4
gpt4 key购买 nike

catch(e)有什么区别和 on Exception catch(e)在 Dart ?

AVOID catches without on clauses.

Using catch clauses without on clauses makes your code prone to encountering unexpected errors that won't be thrown (and thus will go unnoticed).


坏:
try {
somethingRisky()
} catch(e) {
doSomething(e);
}
好:
try {
somethingRisky()
} on Exception catch(e) {
doSomething(e);
}
链接: avoid_catches_without_on_clauses

最佳答案

} on Exception catch (e) {将捕获所有执行 Exception 的抛出对象.
排除大多数错误(实现 Error ),
} catch (e) {将捕获所有抛出的对象,包括异常和错误 - 以及任何其他可能被抛出的对象。大多数抛出的对象都实现了 ExceptionError ,但这只是一个约定。任何非 null物体可以被抛出。

我实际上建议反对 on Exception以及。异常不是错误,它们用于函数作为返回值的替代方法,但异常仍然是函数 API 的一部分,您应该只捕获您实际计划处理的异常。自 Exception本身没有信息,您应该捕获函数记录为抛出的子类型,以便您可以使用可用信息来处理异常情况。
如果您不打算处理它,您不妨将异常视为错误。

仅使用 } catch (e) {在某些情况下捕获所有内容是合理的,主要是在包装其他用户代码的框架代码中,并且需要确保用户代码错误或未处理的异常不会破坏整个程序。

关于dart - Dart 中 'catch(e)' 和 'on Exception catch(e)' 之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60693273/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com