首先我們需要知道什麼是異常?
常通常指,你的代碼可能在編譯時沒有錯誤,可是運行時會出現異常。比如常見的空指針異常。也可能是程序可能出現無法預料的異常,比如你要從一個文件讀信息,可這個文件不存在,程序無法運行下去了,故程序要抓這些異常,通過異常處理機制來拋出這些異常,程序員就可以通過拋出的異常來修改代碼。{}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("輸入不正確");
}
}
}