为什么Dart中存在错误和异常,而不是错误或异常?

原因是历史原因还是什么?

我可以抛出错误,我可以抛出异常.它们都不像Java中那样由分析器判断(异常与运行异常)

推荐答案

this post开始,引用鲍勃·奈斯特罗姆的话:

Error及其子类用于编程错误.如果其中一个 发生时,您的代码是错误的,您应该修复您的代码.

非错误异常类用于运行时错误.有时候你可以 防止他们被抛出,但通常你做不到.

除非在少数特殊情况下,惯用的dart 应该抛出 错误,但永远不会捕捉到它们.它们的存在是专门为了不存在 被捕获,因此他们关闭应用程序并提醒程序员注意 错误的位置.

换句话说,您应该期待(并判断)异常(您应该处理它们).如果您收到错误,那么您需要判断您是如何使用抛出错误的API的-您可能是错误地使用了它.

如果您正在编写API,那么您应该使用相同的模式.错误是向下游开发人员发送的有关他们如何使用您的API的消息.

Dart相关问答推荐

Dart中使用set表达式的switch语句

如何在流侦听器中对异步函数调用进行单元测试

Dart 列表中的 addAll() 和 followBy() 有什么区别?

在Flutter中重命名文件/图像

Dart/Flutter ffi(外部函数接口)本机回调,例如:sqlite3_exec

如何在 Dart 游戏中重复听按键?

Flutter Drawer 作为单独的小部件不允许修改宽度

Flutter|Dart 创建匿名类

如何go 除字符串中的变音符号?

如何通过 foreach 函数避免在 dart Map 中使用 await 键

如何在控件边框(border()/阴影(shadow)中添加霓虹灯效果?

如何从Flatter应用程序中导航到网页?(OAuth)

如何在imageprovider类型中传递图像资源?

Flutter DataTable - 点击行

Dart 中的构造函数和初始化列表有什么区别?

如何在 Dart 中创建 StreamTransformer?

如何在 Dart 中以正确的方式重定向和重新加载?

在 Dart 中,bool是否有parse,就像int一样?

如何展平flatten列表?

如何在 Dart 中运行重复出现的函数?