1、定義java
異常(Exception) : 是指程序運行時出現的非正常狀況,是特殊的運行錯誤對象,對應着Java語言特定的運行錯誤處理機制。數組
2、兩大常見的異常類型spa
• RuntimeException(運行時異常):主要包括「錯誤的類型轉換」、「數組下標越界」、「數組越界」和「空指針」等,這種RuntimeException每每是因爲程序的不正確致使的;指針
•Non-RuntimeException(非運行時異常):主要包括「從一個不存在的文件中讀取數據」、「越過文件結尾繼續讀取」、「鏈接一個不存在的URL」等,這種Non-RuntimeException通常是在編譯器編譯時產生的,一般由環境因素形成,而不是程序自己的做用致使的,例如:IOException。code
3、異常處理的兩種方式對象
①用 try......catch......(finally) 捕獲異常blog
try{ 可能遇到的異常 } catch{ 處理異常的方法 } finally{ 程序輸出的內容 }
(注意:①try 在程序中不能單獨使用,每一個try語句塊能夠伴隨一個或多個catch語句,用於處理可能產生的不一樣類型的異常對象;②finally語句爲異常處理提供了一個統一的出口,不管在try代碼塊中是否發生了異常,finally塊中的語句都會被執行,即finally語句不管遇到什麼異常都會輸出。)編譯器
②用 throws 拋出異常io
public void readFile (Srting file) throws FileNotFoundException{ } //格式:返回類型 + 方法名(參數列表)+ throws + 異常類型列表
4、舉例說明編譯
eg: 定義一個整型的數字69,判斷它是否與ASCII碼錶中的字符‘T’是否相等,若不等於‘T’就繼續執行代碼,輸出69所對應的字符。在這個判斷的過程可能會出現IOException,咱們就經過這個例子來比較一下異常處理的這兩種方式。
①用 try......catch......(finally) 捕獲異常
import java.io.IOException; public class ExceptionTest { public static void read( ) { int a = 69; try { while((char)a != 'T') { //判斷69對應的字符是否等於‘T’,若不等則繼續執行代碼 System.out.println((char) a); a = System.in.read( ); //從a中讀取字符 } } catch(IOException e){ System.out.println("ExceptionTest"); } } public static void main(String[] args) { ExceptionTest.read( ); } }
②用 throws 拋出異常 import java.io.IOException; public class ExceptionTest { public static void read( ) throws IOException { int a = 69; while((char)a != 'T') { //判斷69對應的字符是否等於‘T’,若不等則繼續執行代碼 System.out.println((char) a); a = System.in.read( ); //從a中讀取字符 throw new IOException(); //在方法體中,拋出異常的throw不須要加s(該異常對象可省略不寫 } System.out.println("ExceptionTest"); } public static void main(String[] args) throws IOException { ExceptionTest.read( ); } }