public class TestException(){
@Test
public void test(){
try{
throw new IllegalArgumentException("xxxxxx");
}catch(Exception e){
System.out.println(e.toString());
System.out.println();
System.out.println(e.getMessage());
System.out.println();
e.printStackTrace();
}
}
}
错误信息:
java.lang.IllegalArgumentException: xxxxxx
xxxxxx
java.lang.IllegalArgumentException: xxxxxxx
at TestException.test(TestException.java:32)
toString() : 打印异常的名称和 创建异常对象时传入的message信息
getMessage(): 打印创建异常对象时传入的message信息
printStackTrace(): 打印 toString,并且输出错误栈信息
toString
public String toString() {
String s = getClass().getName();
String message = getLocalizedMessage();
return (message != null) ? (s + ": " + message) : s;
}
public String getLocalizedMessage() {
return getMessage();
}
public String getMessage() {
return detailMessage;
}
public Throwable(String message) {
fillInStackTrace();
detailMessage = message;
}
printStackTrace()
private void printStackTrace(PrintStreamOrWriter s) {
// Guard against malicious overrides of Throwable.equals by
// using a Set with identity equality semantics.
Set<Throwable> dejaVu =
Collections.newSetFromMap(new IdentityHashMap<Throwable, Boolean>());
dejaVu.add(this);
synchronized (s.lock()) {
// Print our stack trace
s.println(this); // 调用 toString
StackTraceElement[] trace = getOurStackTrace();
for (StackTraceElement traceElement : trace) //打印错误栈
s.println("\tat " + traceElement);
// Print suppressed exceptions, if any
for (Throwable se : getSuppressed())
se.printEnclosedStackTrace(s, trace, SUPPRESSED_CAPTION, "\t", dejaVu);
// Print cause, if any
Throwable ourCause = getCause();
if (ourCause != null)
ourCause.printEnclosedStackTrace(s, trace, CAUSE_CAPTION, "", dejaVu);
}
}