Обработка исключений в приложении Swing / Spring - PullRequest
0 голосов
/ 04 июля 2018

Я реализовал обработку исключений в своих веб-приложениях Spring с использованием как подхода AOP, так и метода @ControllerAdvice до сих пор, и у меня не было с ними проблем.

Теперь я внедряю отдельное настольное приложение Swing с использованием Spring Framework, а также пытаюсь обработать исключения, но не могу заставить его работать.

Чтобы сократить детали, я сделал простой проект;

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, но оно не работает.

Может кто-нибудь помочь мне понять, что мне здесь не хватает? Или что может быть лучше для обработки моих исключений?

РЕДАКТИРОВАТЬ: Когда я запускаю Launcher, появляется рамка и выбрасывается NPE;

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

Но System.out.println ("эй"); в моем методе GlobalControllerAdvice не распечатывается, поэтому я предполагаю, что мой класс не знает о сгенерированном исключении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...