gpt4 book ai didi

Java 全局异常处理程序

转载 作者:行者123 更新时间:2023-12-02 07:17:26 32 4
gpt4 key购买 nike

我有一个关于异常处理程序的问题。我的项目有一个结构化代码,其中有许多用于不同目的的包和类。在这段代码中,有很多地方我 try catch 不同类型的异常。其中一些是 SAXExceptionIOExceptionNumberFormatExceptionParserConfigurationExceptionRuntimeException > 等等。

在所有捕获异常的情况下,我只打印堆栈跟踪。当我遇到异常时,我会从堆栈跟踪中找出发生异常的函数并相应地修复它。除了异常(exception),我不做任何其他事情,我也不打算做,因为代码大小并不大,而且对我来说相当容易调试。

现在,我正在使用由第三方开发人员提供的外部java库。该库为我调用的每个可能的函数抛出异常。我正在尝试为这个库编写一个包装器以便利用它。然而,由于这个库,我发现代码中到处都是 try/catch block 。

例如我的代码如下 -

Class Wrapper
{
public void method1()
{
....
try
{
...
third party library calls...
...
} catch (Exception e) { e.printStackTrace(); }

}

public void method2()
{
....
try
{
...
third party library calls...
...
} catch (Exception e) { e.printStackTrace(); }

}
// ... and so on... there are 50-100 methods like this.
// some are even one-liners.
}

鉴于这种情况,我是否应该切换到全局异常处理程序,如 this discussion 中提到的?

这会避免在我的代码中到处写入 try/catch block 吗?

另外,我应该删除现有的 try/catch block 吗?

谢谢!

最佳答案

如果您不希望客户端代码处理已检查的异常,您可以在包装器中执行类似以下操作。

public void method1() {
try {
//3rd party code here....
}
catch(RuntimeException e){
throw e;
}
catch(Exception e){
throw new RuntimeException(e.getMessage(),e);
}
}

注意,这可以避免吞并第 3 方库抛出的异常,并且不会强制客户端处理已检查的异常,例如 IOExceptionSQLException 等。

关于Java 全局异常处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14755530/

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