Swing / Spring应用程序中的异常处理

时间:2018-07-04 07:09:16

标签: java spring swing exception-handling

直到现在,我都使用AOP方法和@ControllerAdvice方法在Spring Web应用程序中实现了异常处理,并且它们没有任何问题。

现在,我正在使用Spring Framework实现一个独立的Swing桌面应用程序,并尝试使用它们来处理异常,但是我无法使其正常工作。

为简化细节,我做了一个简单的项目;

enter image description here

Launcher.java;

public class Launcher {

public static void main(String[] args) {

    EventQueue.invokeLater(new Runnable() {
        public void run() {
            ApplicationContext context = null;
            try {
                context = new AnnotationConfigApplicationContext(Config.class);
                MainFrame mainFrame = (MainFrame) context.getBean("mainFrame");
                mainFrame.init();
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                if (context != null)
                    ((ConfigurableApplicationContext) context).close();
            }

        }
    });
}

}

Config.java;

@Configuration
@ComponentScan("main")
public class Config {

@Bean(name = "mainFrame")
public MainFrame createMainFrame() {
    return new MainFrame();
}

}

GlobalControllerAdvice.java;

@ControllerAdvice
public class GlobalControllerAdvice {

@ExceptionHandler(Exception.class)
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
public void handleException(Exception ex) {
    System.out.println("hey");
}
}

MainFrame.java

public class MainFrame extends JFrame {

public MainFrame() {
    this.setSize(500, 500);
}

public void init() {
    setVisible(true);
    int[] a = null;
    System.out.println(a.length);
}

}

所以在这里,在我的init()方法中,尝试打印“ null”数组的长度会引发NullPointerException,我试图在ControllerAdvice中捕获它,但它不起作用。

有人可以帮助我了解我在这里缺少什么吗?还是有什么更好的方式处理我的异常?

编辑:当我运行启动器时,将显示框架并引发NPE;

java.lang.NullPointerException
    at main.MainFrame.init(MainFrame.java:14)
    at main.Launcher$1.run(Launcher.java:19)

但是System.out.println(“ hey”);在我的GlobalControllerAdvice方法中没有打印出来,所以我猜我的类不知道抛出的异常。

0 个答案:

没有答案