我有一个方法可能会收到无效的输入值或带有相关错误消息的输出。
对于这两种情况,我想抛出异常。所以这两种情况都可能发生在单个方法调用中。那么当异常同时发生时,如何将其作为单个异常处理!!
答案 0 :(得分:2)
看起来您正在尝试使用例外进行验证。这可能有用,但是如果你想要弄清楚你想要验证的东西有什么问题,那么你需要做一些不同的事情。一些伪代码给你一个大概的想法:
public ValidationResult validateInput(Input input) {
ValidationResult result = new ValidationResult();
if (input.someField() == null) {
result.addError("Some field cannot be null");
}
//etc
return result;
}
这个想法是你有一个ValidationResult对象,它将存储输入错误的所有内容。验证完成后,您可以按照以下方式处理:
ValidationResult result = validateInput(someInput);
if (result.hasErrors()) {
for (ErrorMessage message : result.getErrors()) {
log.error(message.getMessage());
} else {
//success
}
您可以编写自己的ValidationResult类或研究验证框架,以找到适用于此目的的框架。
答案 1 :(得分:1)
同时抛出多个异常是不可能的,如果声明你的方法抛出几个异常,那么它们中的一个会被抛出。例如:
public void method() throws Exception1, Exception2 {
if (firstCondition)
throw new Exception1();
if (secondCondition)
throw new Exception2();
// body of method
}
在上面的玩具示例中,将出现第一个或第二个条件,但它们不能同时发生,其中一个将首先为真,然后将引发相应的异常。
答案 2 :(得分:1)
两个例外不可能永远不会同时发生。
当抛出一个异常时,另一个异常并不重要,因为代码流不再在该方法上。
答案 3 :(得分:1)
一段代码不可能同时抛出多个异常。将抛出在代码路径中触发的第一个。
答案 4 :(得分:1)
每个线程都有一个堆栈,异常意味着弹出一个框架,这意味着返回给调用者。所以不,在同一个线程中同时发生两个异常是没有意义的。