我有这样的场景:
//package
org.system.business
|
+-- catalog
|
+-- validators
在目录包内部,我有catalog类,它们代表一些CRUD和CatalogException异常。
在 validator 包内,我有验证类和ValidationException异常。
对于整个系统,我有通用异常,例如 MissingException 等...
嗯......在上面的代码中......:
//web service layer calling the catalogservice
public MyObject insertSomething(MyObject something){
insert(something);
}
//catalogservice calling validation
public MyObject insert(MyObject something){
MyValidator.validate(something);
}
//myvalidator throwing exception
public static validate(MyObject something){
//some validation
throw new ValidationException(new MissingException("Some message"));
}
...这是处理异常的更好方法:
- 在目录调用中捕获 ValidationException 并用 CatalogException 包装,并可能抛出 BusinessException?
- 只是传播 ValidationException?
- 还有其他方案吗?
最佳答案
取决于调用者的逻辑期望。选项 1. 似乎是最好的。请尝试对高级(业务逻辑)异常使用已检查异常。
validator 通常不会抛出异常。它的工作是验证事物,因此它应该预期错误的值。如果验证失败,则应返回 false
或 Result
,但不返回异常。
关于java - Java中通过层处理嵌套异常的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38082933/