gpt4 book ai didi

java - 如何处理您没有预料到的异常,即使它已在文档中声明?

转载 作者:行者123 更新时间:2023-12-02 09:46:30 25 4
gpt4 key购买 nike

当有方法抛出异常并且你知道这些异常不会抛出时,你应该做什么?

很多时候我看到人们只是记录异常,但我想知道 java 中是否存在内置异常,其含义类似于:“不应抛出此异常”。

例如,假设我有一个调用 StaticClass.method(someObject) 的代码,并且当 someObject 不存在时,此方法会抛出 SpecificException有效的。你应该在 catch block 中做什么?

try {
StaticClass.method(someobject);
} catch (SpecificException e) {
// what should I do here?
}

最佳答案

如果在调用该方法时,您确信由于之前的检查,它不会抛出异常,您应该抛出一个包裹 SpecificExceptionRuntimeException

try {
StaticClass.method(someobject);
} catch (SpecificException e) {
//This is unexpected and should never happen.
throw new RuntimeException("Error occured", e);
}

某些方法在无法执行其目的时已经抛出 RuntimeException。

//Here we know for sure that parseInt(..) will not throw an exception so it
//is safe to not catch the RuntimeException.
String s = "1";
int i = Integer.parseInt(s);

//Here instead parseInt(..) will throw a IllegalArgumentException which is a
//RuntimeException because h is not a number. This is something that should
//be fixed in code.
s = "h";
i = Integer.parseInt(s);

RuntimeExceptions 不需要 try/catch block ,编译器不会因为你没有捕获它们而生你的气。通常,它们会在应用程序代码中出现错误且应该修复的地方抛出。无论如何,在某些情况下捕获 RuntimeException 是有用的。

关于java - 如何处理您没有预料到的异常,即使它已在文档中声明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56611458/

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