
文章目錄
- 前言
- 例外
- 編譯時錯誤
- 運行時錯誤
- 邏輯型錯誤
- Java中的Throwable
- Error
- Exception
- 運行時例外
- 非運行時例外
- 例外處理
- 格式
- 簡單使用
- 結語
前言
在Java開發中,經常會遇到錯誤,這個時候就要學到例外處理,當然,學例外處理之前,我們應該先學學例外是什么~
例外
例外就是我們在寫代碼的時候,爆紅啦,高亮啦什么的,還有運行的時候碰到的各種報錯啦
我們經常會因為各種各樣的報錯而頭疼——哦!天吶!又報錯了!
但是我們應該想想好的,我們編程水平不也隨著解決各種各樣的報錯而提高了嗎?
當然我們也可以通過某些方式來避免這種例外,當然這是我們在解決了許許多多的報錯后的事啦,也就是現在!是的沒錯就是現在!O(∩_∩)O哈哈~
一般分為三個型別:編譯時錯誤 、運行時錯誤 、邏輯型錯誤
編譯時錯誤
就是在寫代碼的時候,出現了語法上的錯誤,比如在定義變數的時候
int i = 1
在這里,我們就犯了個編譯時的錯誤,少打了一個作為每句運算式結束的英文分號
運行時錯誤
就是語法上沒有出現錯誤,但是編譯的時候會出現錯誤,比如
double[] a = {1.0, 2.0};
System.out.println(a[3]);
在這里,雖然不會爆紅,但是卻會在運行的時候出現錯誤
Index 3 out of bounds for length 2
意思是索引超出范圍,我們的陣列只有兩個長度,卻查找第四個元素,很明顯是不對的
邏輯型錯誤
就是我們的代碼不符合邏輯
int a = 1;
int b = 0;
System.out.println(a/b);
就會出現錯誤
/ by zero
Java中的Throwable
可分為Error和Exception兩種,Throwable是Error和Exception的共同父類
Error
Error為錯誤,是程式無法進行處理的
一般遇到錯誤,不應該使用例外處理try…catch…
而是修改源代碼,進行改良
Error有三個子類:
- VirtualMachineError(虛擬機錯誤)
- OutOfMenmoryReeor(記憶體溢位)
- ThreadDeath(執行緒死鎖)
目前我只見過記憶體溢位錯誤,通常是因為某些原因,程式出現死回圈導致的
Exception
Exxception可以通過代碼來避免,分成運行時例外和非運行時例外
運行時例外:RuntimeException
非運行時例外:IOException、SQLException、、
運行時例外
碼代碼的時候,編輯器不會給你提示,但是會出現錯誤
- NullPointerException(空指標例外)
比如在定義了一個方法并使用的時候,傳遞的引數為空
public class Ex4_26 {
public static void main(String[] args) {
Integer a = null;
Integer b = 1;
System.out.println(jiSuan(a,b));
}
public static Integer jiSuan(Integer a, Integer b){
Integer c = a + b;
return c;
}
}
報錯了:

- ArrayIndexOfBoundsException(陣列下標越界例外)
我覺得我不用多說,看中文名字應該就知道這是個啥了,不過我還是大發慈悲的決定上代碼
public class Ex4_26 {
public static void main(String[] args) {
int[] a = new int[10];
System.out.println(a[10]);
}
}
會報錯:

- ArithmeticException(算術例外)
這個上面也有例子,被除數為0 的情況,就不多做贅述了 - ClassCastException(型別轉換例外)
如果出現運行時例外,通常是程式員的問題,因為這些都是可以通過邏輯上的處理而避免
非運行時例外
IOException(IO例外)、SQLException(SQL例外)
例外處理
我們的程式遇到這種例外通常會直接結束,并會回傳報錯資訊給你
如果我們想要讓我們的程式繼續運行,我們就需要通過代碼對這些例外進行處理
格式
try {
可能會遇到例外的代碼塊
}catch (){
遇到例外之后,會做的事情
}finally {
不管會不會出現例外都會進行的操作
}
簡單使用
public class Ex4_26 {
public static void main(String[] args) {
String[] a = new String[10];
try {
System.out.println(a[10]);
}catch (ArrayIndexOutOfBoundsException e){
System.out.println(e);
System.out.println("下標越界啦!");
}finally {
System.out.println("不管下標是否越界都會執行");
}
}
}
可以清晰地看到,我們的陣列長度只有10,而下標是從0開始的,所以我們查看下標為10的元素的時候,就會出現陣列下標越界例外,因此那行代碼就是錯的,不會被執行,會執行下面的代碼

結語
這兩天學校開了運動會,有億點點忙哈哈
希望大家能夠多使用例外處理,這對我們的變成生涯很有幫助!
xdm,再見啦·

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/281240.html
標籤:java
