常通常指,你的代碼可能在編譯時沒有錯誤,可是運行時會出現異常。比如常見的空指針異常。也可能是程序可能出現無法預料的異常,比如你要從一個文件讀信息,可這個文件不存在,程序無法運行下去了,故程序要抓這些異常,通過異常處理機制來拋出這些異常,程序員就可以通過拋出的異常來修改代碼。{}try塊中放入可能會出現異常的代碼,catch塊負責捕獲異常,finally塊負責處理一些必須執行的代碼,比較關閉流等。
如何找出異常?(通過什麼方式實現?)
try{ 可能出現異常的語句 } catch(Exception e){ 如果出現異常,就執行這個語句(捕獲異常) } finally{ 不管是否出現異常,總是會執行的語句 }
例如:
import java.util.*; public class YiChang { public static void main (String [] args){ int shu=0; double jg=0; try{ System.out.println("請輸入一個非零數字"); Scanner n=new Scanner(System.in); //建一個掃描器 String a=n.nextLine(); //將掃出來的結果取出 shu = Integer.parseInt(a); //強制轉換成整數 jg=100/shu; System.out.println("您輸入的數字為"+jg); } catch(Exception e){ //如果中間出現了錯誤,例如輸入的不是數字,或者輸入的值為0,的時候就會走這裡 System.out.println("輸入錯誤"); } } }
假設我們輸入一個字符串,那麼輸出的結果為
在方法名的後面加上throws Exception的方法來拋出
import java.util.Scanner; public class 異常測試 { public static double yichang() throws Exception { //在方法名的後面加throws Exception,聲明即便出錯了也繼續執行,由調用這個方法的函數來try System.out.println("請輸入一個非零數字"); Scanner sc=new Scanner(System.in); String a=sc.nextLine(); int shu=Integer.parseInt(a); double jg=100/shu; return jg; } public static void main(String[] args) { try{ double c=yichang(); //調用方法,如果沒有異常,直接輸出,如果有異常則走catch System.out.println(c); } catch(Exception e){ System.out.println("輸入不正確"); } } }