1. 程式人生 > >設計一個具有陣列越界的異常處理的程式,假設計算n個實數的和,用陣列存放。分別採用3種異常處理方式設計程式

設計一個具有陣列越界的異常處理的程式,假設計算n個實數的和,用陣列存放。分別採用3種異常處理方式設計程式

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 異常單獨放在一個函式裡。