設計一個具有陣列越界的異常處理的程式,假設計算n個實數的和,用陣列存放。分別採用3種異常處理方式設計程式
阿新 • • 發佈:2018-11-19
Java三種不同的異常處理方法
第一種:不處理,交給jvm處理
package chuki; import java.util.*; public class one { public static void main(String[] args) { int n, sum = 0; Scanner cin = new Scanner(System.in); n = cin.nextInt(); double[] a = new double[n]; for (int i = 1; i <= n + 1; i++) { a[i] = cin.nextDouble(); sum += a[i]; } System.out.println(sum); cin.close(); } }
就會出現這種錯誤
第二種:利用 try catch丟擲
package chuki; import java.util.*; public class one { public static void main(String[] args) { int n, sum = 0; Scanner cin = new Scanner(System.in); n = cin.nextInt(); double[] a = new double[n]; try { for (int i = 1; i <= n + 1; i++) { a[i] = cin.nextDouble(); sum += a[i]; } } catch (ArrayIndexOutOfBoundsException e) { System.out.println("陣列越界"); } System.out.println(sum); cin.close(); } }
則會丟擲異常資訊,繼續執行
第三種:
package chuki; import java.util.*; public class one { public static double he(double b[]) throws ArrayIndexOutOfBoundsException{ double sum=0.0; for (int i=1;i<b.length;i++) sum+=b[i]; return sum; } public static void main(String[] args) { int n; double sum = 0; Scanner cin = new Scanner(System.in); n = cin.nextInt(); double[] a = new double[n]; try { for (int i=1;i<n;i++) a[i]=cin.nextDouble(); sum=he(a); }catch(ArrayIndexOutOfBoundsException e) { System.out.println("陣列越界"); } System.out.println(sum); cin.close(); } }
多重處理,融合了try catch以及throws
將throws 異常單獨放在一個函式裡。