Chr*_*ett 40
在这篇文章中,引用Bob Nystrom:
错误及其子类用于编程错误.如果其中一个发生,您的代码很糟糕,您应该修复您的代码.
非错误异常类用于运行时错误.有时你可以防止它们被抛出,但通常你不能.
除了在一些特殊情况下,惯用的Dart应该抛出错误,但永远不会捕获它们.它们专门存在以便不被捕获,以便它们取下应用程序并提醒程序员到bug的位置.
换句话说,您应该期望(并检查)异常(您应该处理它们).如果你收到错误,那么你需要检查你是如何使用抛出错误的API - 你可能使用它错了.
如果您正在编写API,那么您应该使用相同的模式.错误是向下游开发人员发送的有关他们如何使用API的消息.
cre*_*not 17
应该为常规的、预期的程序流抛出一个Exceptionin Dart并且旨在被捕获:
一个例外是为了传达信息到关于故障的用户,使得误差可以以编程解决。它旨在被捕获,并且应该包含有用的数据字段。
TimeoutException一TimeoutException会抛出“当调度发生超时等待异步结果”,预计程序流程。
例如,如果我们有一个下载任务,并且该下载任务在我们指定的 30 秒超时时间(可能发生)后仍未完成,我们希望将其传达给我们的用户,因此,我们需要catch将Exception.
应该为意外的程序流程抛出一个Errorin Dart并且不应该被程序员捕获而是解决:
一个
Error对象表示程序员应该避免的程序失败。
AssertionError一个AssertionError被抛出“时断言语句失败”,也就是说,它应该永远不会发生,因为我们assert认为它不应该。
如果我们看到这样的错误,就意味着我们应该更改我们的代码,我们绝对不应该捕获错误。
在实践中,您可以捕获Errors,但您不应该。有一个linter 规则可以帮助强制执行。
Dart 允许它的事实仍然很有用,例如在测试断言或其他错误时。
| 归档时间: |
|
| 查看次数: |
4149 次 |
| 最近记录: |