Exception和Error
Throwable
Throwable
是Exception
和error
的父類。而Exception
和error
的作用不同,這裡的兩個不同的子類體現的是異常中分類的思想。
如上圖所示,Exception
和Error
的分類依據是對於會出現問題帶程式碼我們是否應該捕獲。
應該捕獲(Exception)
對於Exception
我們是應該捕獲的,不過Exception
中也可以進行分類,分類的一句是是否能檢查,也就是該異常是在編譯器就知道還是在執行時才能知道。
checked
對於在編譯期就可以知道的異常就是可檢查的異常,比如ClassNotFoundException
unchecked
對於在編譯期不知道,在執行時可能會出現的異常就是執行時異常,比如
NullPointerException
ArrayIndexOutOfBoundException
ClassCastException
不能捕獲(Error)
對於有些錯誤出現了我們是不能處理的,很多都是jvm
虛擬機器自身出了問題,對於這樣的問題即使我們能捕獲也是處理不了的,所以這些不可捕獲的類別就透過Error
來定義。比如說下面的幾個錯誤
OutOfMemoryError
StackOverFlowError
NoClassDefFoundError
throw和throws
package example;
public class TestThrow {
public static void main(String[] args) {
one();
}
public static void one() throws ArithmeticException{
try {
int i = 1 / 0;
} catch (ArithmeticException e) {
throw new ArithmeticException("by / zero");
}
}
}
Throw
- 作用在方法內,表示丟擲具體異常,由方法體內的語句處理。
- 具體向外丟擲的動作,所以它丟擲的是一個異常實體類。若執行了
Throw
一定是丟擲了某種異常。
Throws
- 作用在方法的宣告上,表示如果丟擲異常,則由該方法的呼叫者來進行異常處理。
- 主要的宣告這個方法會丟擲會丟擲某種型別的異常,讓它的使用者知道捕獲異常的型別。出現異常是一種可能性,但不一定會發生異常。
ClassNotFoundException和NoClassDefFoundError
- 對於
ClassNotFoundException
是一個檢查異常,比如下面的程式碼
package example.classobject;
import org.junit.Test;
public class ClassObject {
@Test
public void testException () throws ClassNotFoundException {
Class.forName("oracle.jdbc.driver.OracleDriver");
}
}
上面的程式碼去載入mysql
資料庫驅動,如果沒有載入到就會出現類沒有找到的異常
-
NoClassDefFoundError
是Error
,這裡說明是可以程式碼可以透過編譯,但是實際執行的是在發現找不到編譯後的class
就會出現這個錯誤.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/3034/viewspace-2824955/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Exception和Error的理解ExceptionError
- Oracle XA Exception error codeOracleExceptionError
- 【Exception】:own error messageExceptionError
- Java的Exception和Error面試題10問10答JavaExceptionError面試題
- Exception String: Error in invoking target of makefileExceptionError
- Java中Error和Exception的異同以及執行時異常(Runtime exception)與檢查型異常(checked exception)的區別JavaErrorException
- php的Error與Exception捕獲問題PHPErrorException
- Exception String: Error in invoking target install of makefileExceptionError
- 你知道PHP中Exception, Error Handler的這些細PHPExceptionError
- 【Java面試指北】Exception Error Throwable 你分得清麼?Java面試ExceptionError
- [GuzzleHttp\Exception\RequestException] cURL error 60: SSL certificate problem: unable to get localHTTPExceptionError
- An error occurred while updating the entries. See the inner exception for details.ErrorWhileExceptionAI
- local.ERROR: Symfony\Component\Debug\Exception\FatalErrorException: Allowed memory size of 134217728ErrorException
- error C2713: Only one form of exception handling permitted per functionErrorORMExceptionMITFunction
- ExceptionException
- java異常——RuntimeException和User Define ExceptionJavaException
- Oracle exceptionOracleException
- Java——ExceptionJavaException
- adstrtal.sh報超時錯誤 ERROR : Timed out( 100000 ): Interrupted ExceptionErrorException
- Sqlserver使用遊標迴圈查詢所有sqlserver error日誌帶有Exception的報錯SQLServerErrorException
- Golang 學習——error 和建立 error 原始碼解析GolangError原始碼
- 異常(Exception)Exception
- 2.4.ExceptionException
- Exception testingException
- deadlock exceptionException
- debug exceptionException
- Error: Exception was raised when calling per-thread-terminate function in extension lrwreplaymain.dlErrorExceptionAIthreadFunction
- Sanic Exception – 異常Exception
- ch12_exceptionException
- Error: java.util.concurrent.ExecutionException: com.android.builder.internal.aapt.v2.Aapt2Exception:ErrorJavaExceptionAndroidUIAPT
- MySQL error log和bin logMySqlError
- 適配Android P(9.0)的問題 (百度地圖)HttpClient: Catch connection exception, INNER_ERRORAndroid地圖HTTPclientExceptionError
- 【譯】Exception Helper – Rethrown ExceptionsException
- Sanic exception() 方法/函式Exception函式
- PHP 異常類 ExceptionPHPException
- Oracle 中的exception——(Raise)OracleExceptionAI
- oracle 使用異常exceptionOracleException
- Java之Undeclared Checked ExceptionJavaException