Java语言的异常
异常的处理
在 Java 中,通常用 try、catch、finally 捕捉并处理异常,用 throw、throws 用来抛 出异常。
1. 异常的产生
示例:本例中有两处代码在运行时将产生异常
package ch09;
public class Demo{
public static void main(String[] args){
int i;
int[] a={1,2,3,4};
for(i=0;i<5;i++)
System.out.println(" a["+i+"]="+a[i]);
System.out.println("5/0"+(5/0));
}
}
运行结果:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException:
Index 4 out of bounds for length 4 at ch09.Demo.main(Demo.java:7)
Exception in thread "main" java.lang.ArithmeticException: / by zero at
ch09.Demo.main(Demo.java:8)
2. 使用try-catch-finally捕获和处理异常 语法结构:
try{
要检查的语句序列:可能要抛出异常的代码
}catch(异常类名 形参对象名){
异常发生时处理的语句序列
}finally{
无论是否产生异常,都要执行这部分语句
}
示例:
package ch09;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class Demo{
public static void main(String[] args){
Scanner scn=new Scanner(System.in);
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
System.out.println("请输入出生日期(yyyy-MM-dd):");
String strBirth=scn.next();
try {
Date birth=sdf.parse(strBirth);
System.out.println("生日:"+birth);
}catch(ParseException pe) {
System.out.println("生日错误!");
pe.printStackTrace();
}finally {
System.out.println("程序执行finally块!");
}
}
}
3. 多异常的处理
1.多异常需要程序设计者熟悉各类异常。初学者在不熟悉各种异常类的情况下可 以使用Exception类。
2.多异常的处理思想与switch-case结构非常类似。
示例:
package ch09;
public class Demo{
public static void main(String[] args){
int i;
int[] a={1,2,3,4};
for(i=0;i<5;i++){
try{
System.out.print("a["+i+"]/"+i+"="+(a[i]/i));
}catch(ArrayIndexOutOfBoundsException e){
System.out.print("捕获到了数组下标越界异常");
}catch(ArithmeticException e){
System.out.print("异常类名称是:"+e);
}catch(Exception e){
System.out.println("捕获"+e.getMessage()+"异常!");
}finally{
System.out.println(" finally i="+i);
}
}
System.out.println("继续!!");
}
}