對Java異常的理解

部落格zhu虎康發表於2021-03-14

JAVA小白手寫總結

提示:本篇簡單列舉了一些Java中的異常與異常處理

前言

提示:很多小夥伴們都會問到,什麼是異常呢,又該怎麼解決呢?
下面我們就從下面的一個案例中切入今天的內容。

提示:以下是本篇文章正文內容,下面案例可供參考

一、異常是什麼?

示例:你要從一個檔案讀資訊,可這個檔案不存在,程式無法執行下去了,故程式要抓這些異常,通過異常處理機制來丟擲這些異常,程式設計師就可以通過丟擲的異常來修改程式碼。try{}catch{}finally{}try塊中放入可能會出現異常的程式碼,catch塊負責捕獲異常,finally塊負責處理一些必須執行的程式碼,比如關閉流等。

二、異常的種類

1.認識異常的兩大類

在Java中我們將異常分為兩大類

  • Error,表示的是虛擬機器錯誤
  • Exception,表示的是編碼、環境、使用者操作輸入時出現的問題

在這裡插入圖片描述

2.常見的幾類異常

  • 空指標異常 NullPointerException
  • 陣列下標越界異常 ArrayIndexOutOfBoundsException
  • 型別轉換異常 ClassCastException
  • 算術異常 AirthmeticException
  • 檔案異常 IOException

三、異常的處理

處理異常時我們通常採用try—catch以及try—catch—finally來處理異常

1、處理異常

  • try程式碼塊中存放的是要監控的區域
  • catch程式碼塊中捕獲異常
  • finally程式碼塊中處理善後工作,一般存放IO流/資源的關閉

結構如下:

try{
    //有可能出現異常的語句
}catch(Exception e){//異常的型別 和接受物件

}finally {
    //異常的出口,最後執行且一定被執行
}
package com.yichang;
 
public class Test {
    public static void main(String[] args) {
        try {
            System.out.println(1/0);//0不能做除數
        }catch (Exception e){
            e.printStackTrace();//列印錯誤資訊,給程式設計師看的
            System.out.println("異常");//給客戶看的
        }finally {
            //一般做收尾工作
            System.out.println("finally");
        }
 
    }
}

2、異常丟擲

  • throws表示方法準備要扔出來一個異常
  • throw表示向外丟擲異常
public void diivide(int one,int two) throws Exception{
	if(two == 0){
		throw new Exception("兩數相除,除數不能為0");
	}else{
		System.out.println("兩數相除,結果為"+one/two);
	}
}

實際應用中的經驗總結

  • 處理執行時異常時,採用邏輯去合理規避同時輔助try—catch處理
  • 在多重catch塊後面,可以加一個catch(Exception)來處理可能會被遺漏的異常
  • 對於不確定的程式碼,也可以加上try—catch,處理潛在的異常
  • 儘量去處理異常,切忌只是簡單地呼叫printStackTrace()去列印輸出
  • 具體如何處理異常,要根據不同的業務需求和異常型別去決定
  • 儘量新增finally語句塊去釋放佔有的資源

相關文章