Java中常见的异常类型有以下几类:
下面再简单介绍一下这几个异常类:
1.ArithmeticException类
该类用于描述算术异常,比如当除0时,会抛出该异常。
int re=10/0;//除数为0,抛出ArithmeticException异常
2.NullPointerException类
用来描述空指针异常,当引用对象是null时,如果调用该对象的属性和方法。会抛出该异常。
String str=null;
int len=str.length();//因为str为null对象,不能调用length()方法
3.ArrayIndexOutOfBoundsException类
该类用于描述数组下表越界是出现的异常。
int[] a=new int[8];
a[8]=9;//数组的最大下标是7,所以此处访问越界
4.NumberFormatException类
该类用于描述字符串转换为数字时的异常。
String str="123AB";
Integer.parseInt(str);//里面出现了字符
try和catch语句:
语法格式如下:
try{
可能产生异常的代码
}catch(异常类1 异常对象1)
{
异常处理代码段1
}catch(异常类2 异常对象2)
{
}
.
.
.
try代码块中的代码执行后可能有多种异常,程序捕获哪一种类型的异常,是由catch语句中的”异常类“参数指定的。
代码中的每一个catch语句都用来捕获一种类型的异常。如果try块中的代码执行时发生异常,则会由上而下依次查找捕获该异常的catch语句块,并执行该语句块中的代码。
下面写一个程序练一下吧:
/*
*设计一个程序,其功能是从命令行输入整数字符串,再将该整数字符串转换为整数,输入的数据可能具有以下格式: 12345 123 45 123x yz456 对这种异常进行捕获和处理。
*/
package test;
import java.util.Scanner;
public class HelloWorld{
public static void main(String args[]){
int i;
Scanner input=new Scanner(System.in);
System.out.println("请输入要输入的数字字符串个数i:");
i=input.nextInt();
String str;
str=input.nextLine();
System.out.println(str);
for(int j=1;j<=i;j++){
System.out.println("请输入第"+j+"个数字字符串:");
str=input.nextLine();
try{
Integer.parseInt(str);
}catch(NumberFormatException e){
System.out.println("有异常产生了!");
}
finally{
System.out.println("程序已执行!");
}
}
System.out.println("程序执行结束啦~");
}
}
下面的图片为运行结果:
上面说了关于异常处理时怎么使用try-catch结构实现对异常的处理。
另外呢,在使用该结构时,还必须注意一下几点:
1.catch块一定要与try块一起使用,不能单独的使用catch块。
2.如果不发生异常,catch块永远不会被执行。
3.一旦某个catch块被执行,其他catch块都会被忽略。
4.一个try块可以有多个catch块,但是多个catch块的排列顺序必须是从特殊到一般,最后一个一般是Exception类。
5.try-catch结构可以嵌套使用.