gpt4 book ai didi

java - 捕获 IllegalArgumentException 好吗

转载 作者:行者123 更新时间:2023-11-29 04:07:48 27 4
gpt4 key购买 nike

我有一个 m1() 方法会抛出 IllegalArgumentException。我从其他一些名为 m2 的方法调用此方法,它会抛出 HttpException 和 Exception。我的要求是,当从 m2() 调用时,只要 m1() 出现 IllegalArgmumentException,我就需要抛出 HTTPException。

我添加的方法如下。将调用放在 try block 中,如果有任何异常,则立即创建新的 HTTP 异常并抛出它。

public static CustomizedEnum m1(String value) {
if (value == null){
throw new IllegalArgumentException(" Input can not be not be null.");
}

if (value.equals("ABC")) return ABC;
if (value.equals("XYZ")) return xyz;
if (value.equals("PQR")) return pqr;

// no matching string, throw an exception
throw new IllegalArgumentException( value +
" for m2() in CustomizedEnum does not exist.");
}

void m2() throws HttpException,Exception {
// ..............
//.................
//................
try{
if(m1("ABC") != null){
}catch(Exception e){
throw new HTTPException("Invalid data");
}
// ............
//................
}

想知道上述方法是否是最佳方法。如果这种方法不好,请提出一些更好的方法。

最佳答案

一般的经验法则是只捕获特殊的异常。从本质上讲,这意味着只捕获你无法预料的异常,否则你需要用逻辑来阻止它们。

此外,您应该捕获特定的异常,而不是一般的Exception。如果您不知道捕获的是什么异常,这可能表明您应该首先尝试弄清楚异常发生的原因并尝试阻止它。

捕获异常背后的想法是防止代码崩溃和退出执行,以及尝试从错误中恢复,记录错误以便开发人员可以尝试在以后的版本中修复错误(如果可能) .

除非您希望在代码的其他地方处理它,否则您不应该抛出错误。否则你会导致崩溃,应该以其他方式解决。

不过,有些异常(exception)是不可避免的。这可能是由于网络连接中断、文件流损坏、内存不足以及许多其他原因造成的。您仍然应该尝试阻止它们,但这并非总是可行。

以下链接描述了捕获异常的条件、原因以及如何比我更好。

https://stackabuse.com/exception-handling-in-java-a-complete-guide-with-best-and-worst-practices/

关于java - 捕获 IllegalArgumentException 好吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57191778/

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