常見異常分類、異常處理(一)

                                                常見異常分類、異常處理

常見的異常分類:java

程序中的異常
                   示例1:給出除數和被除數,求商
                                若是除數爲0,出異常
                                若是除數或者被除數不是數字,出異常
                   示例2:將d:/a.txt複製到e:/a.txt • 若是d:/a.txt不存在
                                若是e:/存在a.txt • 若是e盤空間不足
                                若是複製過程當中出錯程序員

if(「d:/a.txt」這個文件存在){
   if(e盤的空間大於a.txt文件長度){
   if(文件複製一半IO流斷掉){
  中止copy,輸出:IO流出問題!
  }else{
      copyFile("d:/a.txt","e:/a.txt");
  }
  }else{
      輸出:e盤空間不夠存放a.txt!
  }
  }else{
      輸出:a.txt不存在!
      }

程序中有異常時,面對異常該怎麼辦呢?
                   方式1:由開發者經過if-else來解決異常問題
                                代碼臃腫:業務代碼和異常處理代碼放一塊兒
                                程序員要花很大精力"堵漏洞「
                                程序員很難堵住全部「漏洞」,對程序員自己要求較高
                  方式2:開發者不須要經過if-else來解決異常問題,而是Java提供異常處理機制。它將異常處理代碼和和業務代碼分                                   離,使程序更優雅,更好的容錯性,高鍵壯性。數據庫

異常的概念:
          軟件程序在運行過程當中發生的不正常的事件,好比要打開某一個文件時,這個文件可能不存在或者格式不對;你要讀取數據庫的數據,數據多是空的;咱們把碰見的這些問題,就叫作異常(Exception)編程

JAVA是採用   面向對象   的方式來處理異常。
          處理過程:
          1.拋出異常:在執行一個方法時,若是發生異常,則這個方法生成表明該異常的一個對象,中止當前執行路徑,並把異常                                   對象提交給JRE,
          2.捕獲異常:JRE獲得該異常後,尋找相應的代碼來處理該異常,JRE在方法的調用棧中查找,從生成異常的方法開始回                                  溯,直到找到相應的異常處理代碼爲止數組

try-catch處理異常指針

try {
                copyFile("d:/a.txt","e:/a.txt");  //假設這裏出現異常
            } catch (Exception e) {
            // TODO: handle exception
                e.printStackTrace();   //在這裏進行捕獲
            }code

1.RuntTimeException運行時異常分析_運行時異常處理
          這類錯誤一般是由編程錯誤致使的,因此在編寫程序時,並不要求必須使用異常機制來處理這類異常,常常須要經過增長「邏輯判斷來處理這些異常」對象

int b=0;
System.out.println(1/b);

解決:blog

int b=0;
		if (b!=0) {
			System.out.println(1/b);
		}

當程序訪問一個空對象的成員變量或方法,或者訪問一個空數組成員時會發生空指針異常(NullPointerException),怎麼
處理,能夠加個if語句體,解決空指針異常,一般是增長非空判斷事件

2.ClassCastException強制轉型報錯

public class _Exception {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
        Animal animal=new Dog();
        Cat c=(Cat)animal; 
	}
}  
class Animal{……}
class Dog extends Animal{……}
class Cat extends Animal{……}

報錯:Exception in thread "main" java.lang.ClassCastException: cn.xiaomu_07.Dog cannot be cast to cn.xiaomu_07.Cat
    at cn.xiaomu_07._Exception.main(_Exception.java:28)

解決:

public class _Exception {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
        Animal animal=new Dog();
        if (animal instanceof Cat) {
			Cat c=(Cat)animal;
		} }}  
class Animal{……}
class Dog extends Animal{……}
class Cat extends Animal{……}

3.數組越界(ArrayInsexOutOfBoundsException)異常處理

int[] arr=new int[5];  
		System.out.println(arr[5]);

解決:

int[] arr=new int[5];  
		int v=5;
		if (v<arr.length) {
			System.out.println(arr[5]);
		}
		System.out.println(arr[5]);
	    }
相關文章
相關標籤/搜索