Java:初始化错误的适当异常

标签 java exception error-handling initialization

当静态工厂方法无法初始化新对象时,我应该抛出哪个异常?我更喜欢引发有意义的异常而不是返回 null

最佳答案

如果你因为数据不足而在 Factory 中抛出异常,我喜欢抛出一个 IllegalStateException,其描述类似于“无法构造 X,未设置 Y”。

如果您由于数据冲突而在工厂中抛出异常,我喜欢抛出一个 IllegalStateException,其描述类似于“无法构造 X,Y 与 Z 冲突”。

如果您由于错误(或无意义的)值而在工厂中引发异常,我喜欢引发 IllegalArgumentException,其描述类似于“Y 不能是 A”。

如果您由于缺少值而在工厂中抛出异常,我喜欢抛出一个 IllegalArgumentException,其描述类似于“Y 不能为空”。

最后一个偏好取决于一些争论。有人建议最好抛出 NullPointerException;就我而言,我们不惜一切代价避免它们,因为许多客户倾向于不阅读异常消息(并假设 NullPointerException 意味着编码错误)。

在任何情况下,您都应该提供一个好的、具体的信息来说明引发异常的原因,以减轻您在几个月后看到该异常引发的 future 支持成本。

关于Java:初始化错误的适当异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9684500/

相关文章:

java - 为代码 'CoordinateReferenceSystem' 创建 "EPSG:4326"对象时 GeoServer 数据库失败

python - Python 解释器报告异常时给出意外行

php - 当查询中传递的数据与数据库中已有的数据相同时,如何判断 MySQL 更新查询是否成功?

php - PHP : Undefined offset 1 error

java - 有没有什么技巧可以在运行时知道实例泛型的实际具体类?

java - 照片/图像到草图算法

Java SWT : How to make a button unclickable while a separate thread is running

exception - Haskell - 检查文件句柄的有效性

Java 8 通用重试特定异常

python - 如何对两个文件执行错误处理?