Pracuję z javax.swing
nad aplikacją, która generuje formularze ze schematu XML (przy użyciu biblioteki JAXFront) i przechowuje dane wypełnione przez użytkownika w dokumentach XML.
Kiedy tego potrzebuję, umieszczam bloki try-catch-finally, ale mam mały problem z wychwytywaniem wyjątków, gdy kończy się główny wątek (wątki AWT nadal działają).
Mam dwie klasy, które wykonują główną pracę i inne klasy, które nie są ważne dla tego pytania:
Klasa główna: ma następującą strukturę. Inicjuje aplikację i uruchamia ramkę główną
public class Main { public static void main(String[] args) { readArgs(); // An INI file with the app config Model model = initializeElements(args); // My model class try { MyFrame mfr = new MyFrame(title,model); mfr.visualize(); // Assembling view and setting visible } catch( Excepion e ) { doCleanUp(); System.exit(-1); } } }
Klasa ramki: generuje zdarzenia przeglądania i słuchania
public class MyFrame extends JFrame implements ActionListener,MenuListener { // Some attributes // Other mthods without importance /** * Compose the elements, add listeners and set visible the frame */ public void visualize() { generateFormPanel(); setListeners(); validate(); setVisible(true); } public MyFrame(String title, Modele model) { super(title); createElementsUsing(model); } public void actionPerformed(ActionEvent e) { // Code to manage events } }
Cóż, problem jest następujący: Kiedy funkcja wizualizacji jest wykonywana z metody głównej, widok jest generowany i pokazywany. W tym momencie tracę kontrolę nad łapaniem wyjątków. Następnie moje pytanie brzmi: czy istnieje jakiś sposób na przechwycenie możliwych wyjątków RuntimeException zgłoszonych po tym punkcie.
Mam nadzieję, że rozumiesz mój angielski i potrafisz odpowiedzieć na pytanie.
Z góry dziękuję.