Java中如何处理异常

问题描述 投票:0回答:1

我有一个处理数百万数据的脚本。相同的数据已损坏,因此我使用的框架失败并引发异常。我依赖于一个我无法更改/更新的框架。我已经按原样使用它了。每次我使用这个框架的功能时我都会使用try/catch。因此,我使用了大量的 try/catch 块,导致代码变得不可读,我想摆脱 try/catch 并与我的代码分开处理异常。

我希望有一个全局异常处理程序,因此每当框架抛出异常时,它都应该捕获并记录,并且处理数据的循环应该继续。像 spring 和 jersey 这样的 Web 框架有一个全局异常处理程序。我希望脚本有类似的行为。

我尝试了 Thread.UncaughtExceptionHandler 但 UncaughtExceptionHandler 的默认行为是在发生异常时停止进程,因此它不起作用。

目前我的代码如下所示。我想摆脱 try/catch 块。

public static void main(String[] args)  throws FrameworkException {
    List<Element> elements = new ArrayList<>(); //Millons of data
    processItems(elements)
}

public void processItems(List<Element> items) throws FrameworkException{
    for (int i = 0; i < elements.size(); i++) {
        try{
            framework.doSomething(elements.get(i));
        }
        catch(FrameworkException e){
            // handle
        }

        // . . .

        try{
            framework.doDifferentThing(elements.get(i));
        }
        catch(FrameworkException e){
            // handle
        }

        // . . .
    }

    System.out.println("Processing completed.");
}

我梦想的代码和异常是在全局处理的。

public void processItems(List<Element> items) throws FrameworkException{
    for (int i = 0; i < elements.size(); i++) {
            framework.doSomething(elements.get(i));

            // . . .

            framework.doDifferentThing(elements.get(i));

             // . . .
    }
    System.out.println("Processing completed.");
}
java exception error-handling exceptionhandler uncaughtexceptionhandler
1个回答
0
投票

要处理可以处理的任何异常,您可以使用单个

UncaughtExceptionHandler
,如下所示:

Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
    public void uncaughtException(Thread arg0, Throwable arg1) {
        //Your code for handling exceptions here
    };
});
© www.soinside.com 2019 - 2024. All rights reserved.