淘先锋技术网

首页 1 2 3 4 5 6 7

Java异常和错误的基类是Throwable类,它是所有可抛出异常的超类,包括异常和错误。

public class Throwable {
private String message;
private Throwable cause;
public Throwable() {
fillInStackTrace();
}
protected Throwable(String message, Throwable cause) {
fillInStackTrace();
this.message = message;
this.cause = cause;
}
protected Throwable(String message) {
fillInStackTrace();
this.message = message;
}
public String getMessage() {
return message;
}
public Throwable getCause() {
return cause;
}
public void printStackTrace() {
printStackTrace(System.err);
}
public void printStackTrace(PrintStream s) {
printStackTrace(new PrintWriter(s));
}
public void printStackTrace(PrintWriter s) {
s.println(this);
s.println("\t... 以下省略");
}
public String toString() {
String s = getClass().getName();
String message = getMessage();
return (message != null) ? (s + ": " + message) : s;
}
public native Throwable fillInStackTrace();
}

Throwable类的三个子类是Error、Exception和RuntimeException。其中,Error是指其它致命的错误,应用程序无法捕捉,比如VirtualMachineError,OutOfMemoryError;Exception则是程序运行过程中的错误,比如IOException、SQLException等;而RuntimeException,则是程序运行过程中的运行时异常,比如NullPointerException、ClassCastException等。

当程序中出现异常或错误时,可以使用try-catch-finally语句捕捉它们,如下所示:

try {
// 可能抛出异常或错误的代码
} catch (Exception e) {
// 处理异常
} catch (Error e) {
// 处理错误
} finally {
// 无论是否有异常或错误,都会执行的代码
}

对于RuntimeException及其子类的错误,一般不需要捕捉,因为它们是由程序员编写不严谨的代码所引起的,需要程序员自行修正;而对于Exception及其子类和Error及其子类的错误,则需要进行捕捉和处理,以避免程序崩溃。