文章目錄
- 前言
- 一.異常
- 二、處理異常的兩種方法
- 二、使用方法
-
- 1.try-catch
- 2.throws
- 3 , try - catch -finally
-
- 舉例
- 總結
前言
對于一個程式員來說,我們會遇到一些異常(會導緻程式中斷的指令流),例如一個數不能除以0,在程式中這樣會産生異常,為了使程式能夠正常的運作下去,我們要處理異常
一.異常
異常分為受檢異常和非受檢異常,異常類下有許多子類,子類一些還有許多繼承子類。
受檢異常:就是寫成代碼會顯示錯誤,有可能發生異常
非受檢異常:隻有運作時才顯示異常,也叫運作時異常
Exception 範圍最大的異常
IOException 傳遞指令不對,導緻輸入輸出異常
RuntimeException 運作時異常,非受檢異常
二、處理異常的兩種方法
1.try-catch
2.throws
二、使用方法
1.try-catch
一般沒有提示自己覺得有資料錯誤,可以當作if-else使用,做錯誤處理
代碼如下(示例):
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
// 首先這裡有兩種錯誤,
//1,是兩個輸入不是數字,
//2是兩個數字,除數為0
int a = s.nextInt();
int b = s.nextInt();
System.out.println(a/b);
}
try {
int a = s.nextInt();
int b = s.nextInt();
System.out.println(a/b);
}catch (Exception e){
//實際上是InputMismatchException,
//ArithmeticException,括号内可以寫為InputMismatchException|ArithmeticException e
System.out.println("輸入異常");
}
2.throws
傳參參數異常,我們使用throws
代碼如下(示例):
public static void sum(String a,String b)throws IOException {
int sum = Integer.parseInt(a)+Integer.parseInt(b);
// 當然這是非受檢異常,但這個方法沒錯,錯誤在于傳入參數,把這個抛出去
}
3 , try - catch -finally
也是try-catch一種,隻不過格式可以擴充成下面
try{
//可能發生異常的代碼
}catch(異常情況(可以多個,可以一個) 參數值){
// 處理情況1,回調或者退出
}catch(異常情況 參數值){
// 處理情況2
}····{
}finally{
//必然執行代碼,無論是否異常都要執行
}
舉例
代碼如下,
public static void main(String[] args) {
number n = new number(); // 生成實體類
System.out.println( n(n).num); // 輸出為20
System.out.println(m(1)); // 輸出為10
}
static class number{
public int num;
}
static number n(number n){
try {
n.num= 10;
return n;
}catch ( Exception e){
}finally {
n.num = 20;
}
return n;
}
static int m(int m){
try {
m= 10;
return m; //如果去掉這行代碼,輸出為20
}catch ( Exception e){
}finally {
m = 20;
}
return m;
}
但是
總結
隻是對異常及處理有初步的了解,至于更深的可能後續補充與擴充