首页 > 代码库 > 异常处理
异常处理
实验四 异常处理
1.建立exception包,编写TestException.java程序,主方法中有以下代码,确定其中可能出现的异常,进行捕获处理。
for(inti=0;i<4;i++){ intk; switch(i){ case0:intzero=0;k=911/zero;break; case1:intb[]=null;k?=b[0];break; case2:int c[]=new int[2];k=c[9];break; case3:charch="abc".charAt(99);break; }}package Exception;public class TestException { public static void main(String[] args){ for(int i=0;i<4;i++){ try{ int k; switch(i){ case 0: int zero=0;k=911/zero;break; case 1: int b[]=null;k=b[0];break; case 2: int c[]=new int[2];k=c[9];break; case 3: char ch="abc".charAt(99);break; } } catch(ArithmeticException e){ System.out.println(e.getMessage()); } catch(java.lang.NullPointerException e){ System.out.println(e.getMessage()); } catch(ArrayIndexOutOfBoundsException e){ System.out.println(e.getMessage()); } catch(java.lang.StringIndexOutOfBoundsException e){ System.out.println(e.getMessage()); } } }}
运行结果:
/ by zero
null
9
String index out of range: 99
2.建立exception包,建立Bank类,类中有变量double balance表示存款,Bank类的构造方法能增加存款,Bank类中有取款的发方法withDrawal(double dAmount),当取款的数额大于存款时,抛出InsufficientFundsException,取款数额为负数,抛出NagativeFundsException,如new Bank(100),表示存入银行100元,当用方法withdrawal(150),withdrawal(-15)时会抛出自定义异常。
提示: InsufficientFundsException,NagativeFundsException为自定义的类,分别产生余额不足异常和取款为负数异常,需继承Exception类。
通过输出结果了解java异常的产生,并将该Java程序放在exception包中。
packageException;//注解先建立一个package,然后在包中建立各种类
public classInsufficientFundsException extends Exception{
String s1;
InsufficientFundsException(String t){
s1=t;
}
public String getMassage1(){
return s1;
}
}
packageException;
public classNagativeFundsException extends Exception{
String s;
NagativeFundsException(String t){
s=t;
}
public String getMassage(){
return s;
}
}
packageException;
public classBank extends Exception{
static double ba=0;
Bank(double r){
ba=ba+r;
}
void withDrawal(double dAmount) throws InsufficientFundsException,NagativeFundsException{
if(dAmount>ba) throw newInsufficientFundsException("取款余额不足");
else if(dAmount<0) throw new NagativeFundsException("取款为负数");
else
System.out.print("银行里还剩余:"+(ba-dAmount));
}
}
package Exception;
importjava.util.*;
public class A{
public static void main(String args[] ){
Bank b=new Bank(100);
Scanner sc=new Scanner(System.in);
try {
System.out.println("请输入一个数");
b.withDrawal(sc.nextInt());
}
catch(InsufficientFundsException e){
System.out.println(e.getMassage1());
}
catch(NagativeFundsException e){
System.out.println(e.getMassage());
}
}
}
运行结果:
请输入一个数
80
银行里还剩余:20.0
for(inti=0;i<4;i++){
intk;
switch(i){
case0:intzero=0;k=911/zero;break;
case1:intb[]=null;k?=b[0];break;
case2:intc[]=new int[2];k=c[9];break;
case3:charch="abc".charAt(99);break;
}
}
packageException;
public classTestException {
public static void main(String[] args){
for(inti=0;i<4;i++){
try{
intk;
switch(i){
case0: int zero=0;k=911/zero;break;
case1: int b[]=null;k=b[0];break;
case2: int c[]=new int[2];k=c[9];break;
case3: char ch="abc".charAt(99);break;
}
}
catch(ArithmeticException e){
System.out.println(e.getMessage());
}
catch(java.lang.NullPointerException e){
System.out.println(e.getMessage());
}
catch(ArrayIndexOutOfBoundsException e){
System.out.println(e.getMessage());
}
catch(java.lang.StringIndexOutOfBoundsExceptione){
System.out.println(e.getMessage());
}
}
}
}
运行结果:
/ by zero
null
9
String index outof range: 99
异常处理