我必須在標簽和日志檔案中寫入堆疊例外:
try {
...
} catch(Exception e) {
File file = new File(pathFile "//error.log");
PrintStream ps = new PrintStream(file);
e.printStackTrace(ps);
ps.close();
}
如何e在 Swing 中書寫JLabel?
uj5u.com熱心網友回復:
我使用JOptionPane
catch (Exception e) {
java.io.StringWriter sw = new java.io.StringWriter();
java.io.PrintWriter pw = new java.io.PrintWriter(sw);
e.printStackTrace(pw);
String stackTrace = sw.toString();
javax.swing.JTextArea textArea = new javax.swing.JTextArea(stackTrace);
javax.swing.JScrollPane scrollPane = new javax.swing.JScrollPane(textArea);
javax.swing.JOptionPane.showMessageDialog(null,
scrollPane,
e.toString(),
javax.swing.JOptionPane.ERROR_MESSAGE);
}
請注意,呼叫方法中的第一個引數showMessageDialog為 null,因為您問題中的代碼未顯示任何Swing組件。您應該嘗試使用 GUI 中的實際組件而不是 null。
方法的第二個引數showMessageDialog是一個物件,這基本上意味著它可以是你喜歡的任何東西。在上面的代碼中,它是一個滾動窗格。JOptionPane知道如何處理和展示它。
方法printStackTrace,在類中java.lang.Throwable被多載。上面的代碼演示了一種將整個堆疊跟蹤作為單個字串獲取的方法。有關方法printStackTrace和建構式以及類StringWriter ,請參閱javadoc。PrintWriter
事實上,我有一個實用程式類。
public class MessageWindow {
public static void showError(Exception e) {
java.io.StringWriter sw = new java.io.StringWriter();
java.io.PrintWriter pw = new java.io.PrintWriter(sw);
e.printStackTrace(pw);
String stackTrace = sw.toString();
javax.swing.JTextArea textArea = new javax.swing.JTextArea(stackTrace);
javax.swing.JScrollPane scrollPane = new javax.swing.JScrollPane(textArea);
javax.swing.JOptionPane.showMessageDialog(null,
scrollPane,
e.toString(),
javax.swing.JOptionPane.ERROR_MESSAGE);
}
}
然后我只是從catch塊中呼叫該方法。
catch (Exception e) {
MessageWindow.showError(e);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/403229.html
標籤:
