SwingWorker을 사용하여 백그라운드에서 논리를 수행하는 Swing 응용 프로그램에서 작업하고 있습니다. 나는 클래스 A (그리고 몇몇 다른 것들)에서 오류 처리를 제거하고 aspectJ를 사용하여 중앙 처리하는 측면을 작성하려고 시도했다. 지금까지 나는 doInBackground
과 propertyChange
메쏘드를 잡기위한 pointcut을 쓸 수 없었다.aspectJ를 사용하여 SwingWorker 예외 처리
@Component
public class A{
public void perform(final String val) {
final SwingWorker<String, Object> myWorker = new SwingWorker<String, Object>(){
@Override
protected String doInBackground() throws Exception {
String response = null;
try{
//do logic and return response
}catch(MyException e){
response "myexception";
}catch(MyException2 e){
response "myexception2";
}catch(Exception e){
response = "fatal exception"
}
return response;
}
};
myWorker.addPropertyChangeListener(new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent evt) {
try {
//do logic
}catch(MyException3 e){
//do logic
}catch(Exception e){
//do logic
}
}
});
myWorker.execute();
}
}
무엇이 문제입니까? – aepurniet
SwingWorker가 익명 클래스로 호출되고 doInBackGround가 다른 스레드에서 실행됩니다. 지금까지 성공하지 못했지만 다른 pointcut 선언을 시도했습니다. – user3278795