Dart中是否支持创建checked与unchecked类型的异常?
Dart是否支持Java式的checked与unchecked异常?
Dart 本身没有提供Java那样的编译期强制校验的checked异常机制,所有异常默认都是unchecked类型,编译阶段不会检查你是否捕获了某个异常,未处理的异常只会在运行时触发程序崩溃。
核心差异说明
- Java的checked异常是语言级别的强制规则,要求调用方必须处理对应异常才能通过编译,而Dart团队在设计时认为这类强制规则容易催生无意义的空
catch块,反而降低代码质量,因此没有纳入该特性。 - 你可以在业务代码中人为约定两类异常的使用规范,只是没有编译期的强制校验:
- 继承
Exception类实现自定义异常,作为业务层面约定的「需要主动处理的异常」,比如网络请求失败、权限不足这类预期内的业务异常,团队可以约定调用方必须处理这类异常 - 继承
Error类实现自定义错误,作为程序层面的非预期错误,比如参数非法、状态越界这类应该在开发阶段就解决的问题,通常不需要上层业务捕获
- 继承
自定义异常代码示例
// 业务约定需要处理的异常(仅团队规范约束,无编译校验) class LoginFailedException implements Exception { final String msg; LoginFailedException(this.msg); } // 运行时错误,不需要业务层捕获 class InvalidInputError extends Error { final String msg; InvalidInputError(this.msg); }
如果需要强制某些异常必须处理,可以通过自定义静态分析规则、代码评审流程来实现,语言本身没有内置相关能力。
内容的提问来源于stack exchange,提问作者Aarij Amir
相关产品推荐
相关产品推荐

