gpt4 book ai didi

java - 捕获可抛出并处理特定异常

转载 作者:IT老高 更新时间:2023-10-28 20:37:30 25 4
gpt4 key购买 nike

好的,我知道捕获 throwable 不是一个好主意:

    try {
// Some code
} catch(Throwable e) { // Not cool!
// handle the exception
}

但最近我在阅读一个开源代码时,看到了这段有趣的(至少对我而言)代码:

    try {
// Some Code
} catch (Throwable ex){
response = handleException(ex, resource);
}

private handleException(Throwable t, String resource) {
if (t instanceof SQLEXception) {
// Some code
} else if (t instanceof IllegalArgumentException) {
//some code
} //so on and so forth
}

这似乎没有那么糟糕?这种方法有什么问题?

最佳答案

您不应该捕获 Throwable 有多种原因。首先,Throwable 包含 Error - 如果出现其中之一,应用程序通常无能为力。 Throwable 也减少了你发现发生了什么的机会。你得到的只是“发生了一些不好的事情”——这可能是一场灾难,也可能只是一种滋扰。

另一种方法更好,但当然我仍然不会捕获 Throwable,但如果可能的话, try catch 更具体的异常。否则,您会捕获一切,然后尝试找出发生了哪种坏事。你的例子可以写成...

try {
...
} catch (SQLEXception ex){
response = ... ;
} catch (IllegalArgumentException ex){
response = ...;
}

...这将减少 if ( ... instanceof ... ) block 的数量(这只是因为作者首先决定在一个大桶中捕获所有内容而需要)。它实际上是 throws Throwable,那么你当然没有太多选择。

关于java - 捕获可抛出并处理特定异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31585265/

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