C / C++的和Java的異常機制[1]
關鍵字:C / C++ Java 異常機制程序總會出現異常的,需要我們去處理。C++和JAVA都有自己異常機制,我們應該遵循著去處理異常。那它們的異常機制有何異同呢? 要注意一點:異常機制處理異常是要付出代價的,即異常處理的代碼比無異常處理的要慢好多倍。 JAVA
關鍵字:C / C++ Java 異常機制程序總會出現異常的,需要我們去處理。C++和JAVA都有自己異常機制,我們應該遵循著去處理異常。那它們的異常機制有何異同呢?
要注意一點:異常機制處理異常是要付出代價的,即異常處理的代碼比無異常處理的要慢好多倍。
JAVA的異常機制
在
面向對象的世界里,一切都是對象,JAVA的異常也不例外。API中異常類的“始祖”是 Throwable 類,有 Exception 類和 Error 類直接繼承Throwable 。Error是很嚴重的,是不可挽救的,我們一般是通過繼承Throwable 或Exception 來定義自己的異常類。
先看看API(這里是從1.5摘抄的)里的兩個異常類是怎樣的?
import
java.io.*;
public class Throwable implements Serializable ...{
/** *//** use serialVersionUID from JDK 1.0.2 for interoperability */
private static final long serialVersionUID = -3042686055658047285L;
/** *//**
* Native code saves some indication of the stack backtrace in this slot.
*/
private transient Object backtrace;
private String detailMessage;
private Throwable cause = this;
private StackTraceElement[] stackTrace;
public Throwable() ...{
fillInStackTrace();
}
原文轉自:http://www.anti-gravitydesign.com