java - Java中通过层处理嵌套异常的最佳方法

标签 java exception

我有这样的场景:

//package
org.system.business
    |
    +-- catalog
    |
    +-- validators

在目录包内部,我有catalog类,它们代表一些CRUDCatalogException异常。

在 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"));
}

...这是处理异常的更好方法:

  1. 在目录调用中捕获 ValidationException 并用 CatalogException 包装,并可能抛出 BusinessException
  2. 只是传播 ValidationException?
  3. 还有其他方案吗?

最佳答案

取决于调用者的逻辑期望。选项 1. 似乎是最好的。请尝试对高级(业务逻辑)异常使用已检查异常。

validator 通常不会抛出异常。它的工作是验证事物,因此它应该预期错误的值。如果验证失败,则应返回 falseResult,但不返回异常。

关于java - Java中通过层处理嵌套异常的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38082933/

相关文章:

java - java.util.concurrent.BlockingQueue 的实现

java - 使用 Java Netbeans 发送电子邮件(异常(exception))

java - BlueJ、NetBeans、Java

java - 反序列化 java.awt.Color -> java.io.InvalidClassException

c++ - 交叉编译器异常处理——可以安全地完成吗?

exception - 在 zend 框架中运行 Controller 单元测试时出现 "No default module defined for this application"异常

android - 仅在启用 proguard 时 JSONArray 不是字符串异常

java - 使用 apache poi excel 创建的电子邮件地址验证

关于异常处理的 C++ 建议

python - 请求.exceptions.ConnectionError : HTTPConnectionPool