亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

秋千丟失異常

秋千丟失異常

MMTTMM 2021-05-04 17:29:29
當我啟動模態對話框并呈現異常時,該異常會出現在某個地方。我可以在調用dialog.setVisible()的代碼中捕獲它嗎?PS我知道Thread.setUncaughtExceptionHandler,我需要從調用該對話框的代碼中捕獲它。PPS在此先感謝Andrey /。public class TestSwing {    public static void main(String[] args) {        SwingUtilities.invokeLater(new Runnable() {            @Override            public void run() {                try {                    JDialog jDialog = new JDialog();                    JTable table = new JTable();                    table.setModel(new DefaultTableModel() {                        @Override public int getColumnCount() {return 1;}                        @Override public int getRowCount() {return 1;}                        @Override                        public Object getValueAt(int row, int column) {                            throw new RuntimeException("Hello");                        }                    });                    jDialog.add(table);                    jDialog.setModal(true);                    jDialog.pack();                    jDialog.setVisible(true);                    System.out.println("dialog closed");                } catch (Exception e) {                    e.printStackTrace();                    System.out.println("got it");               }           }        });    }}
查看完整描述

1 回答

?
千萬里不及你

TA貢獻1784條經驗 獲得超9個贊

不,您不能,因為異常不在您的對話框中,而是在線程中。Dialog.setVisible()等待對話框不可見,但不要停止當前線程。但是,我有一個竅門,可能會幫助您獲得所需的行為。


public class TestSwing {

    public static void main(String[] args) {

        SwingUtilities.invokeLater(new Runnable() {

            @Override

            public void run() {

                try {

                    JDialog jDialog = new JDialog();

                    JTable table = new JTable();

                    table.setModel(new DefaultTableModel() {

                        @Override public int getColumnCount() {return 1;}

                        @Override public int getRowCount() {return 1;}

                        @Override

                        public Object getValueAt(int row, int column) {

                            throw new RuntimeException("Hello");

                        }

                    });


                    jDialog.add(table);

                    jDialog.setModal(true);

                    jDialog.pack();

                    Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {


                        @Override

                        public void uncaughtException(Thread t, Throwable e) {

                            jDialog.setVisible(false);

                            Thread.setDefaultUncaughtExceptionHandler(null);

                            throw new RuntimeException(e);

                        }

                    });

                    jDialog.setVisible(true);


                    System.out.println("dialog closed");


                } catch (Exception e) {

                    e.printStackTrace();

                    System.out.println("got it");

               }


           }

        });

    }

}


查看完整回答
反對 回復 2021-05-19
  • 1 回答
  • 0 關注
  • 135 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號