gpt4 book ai didi

java - 捕获多个异常

转载 作者:行者123 更新时间:2023-11-29 05:01:11 24 4
gpt4 key购买 nike

public class OfficeTimeXception {
public int inTime;
public int outTime;

public void anyXception() throws CoreHourXception, NormalHourException {
int k = outTime - inTime;

if (inTime > 11) {
throw new CoreHourXception(inTime - 11);
}
if (k < 8) {
throw new NormalHourException(8 + (inTime - outTime));
} else if (outTime < 16) {
throw new CoreHourXception(16 - outTime);
}
}
if my try & catch statement is


{test.inTime = 12;
test.outTime = 19;
try {
test.anyXception();
}

catch (CoreHourXception e) {
System.out.println("core hour exception by" + e.getTime()
+ " hours");
e.printStackTrace();
} catch (NormalHourException e) {
System.out.println("normal hour exception by" + e.getTime()
+ " hours");
e.printStackTrace();
}}

当两个条件都失败时,我需要捕获两个异常....但即使两个条件都失败,我也只能获得 coreHourException。

最佳答案

您一次只能抛出一个异常,当您这样做时代码执行会立即停止(后面的验证根本不会运行)。

如果您想检查多个错误并一次返回所有结果,您必须在集合中收集验证错误并返回该集合(例如通过将其附加到包装异常)。

例如

List<Exception> errors = new List<>();
if (errorConditionOne) errors.add(new CoreHourXception());
if (errorConditionTwo) errors.add(new SomeOtherException(123, "abc"));
if (!errors.isEmpty) throw new ValidationException(errors);

您放入错误集合中的这些对象本身不必是异常对象,它们可以是您认为便于传达信息的任何对象。

关于java - 捕获多个异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32044841/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com