异常的处理机制——捕获机制:try-catch-finally
try:监控区域,执行可能产生异常的代码
catch:捕获,异常处理
finally:善后处理,无论是否发生异常,代码总要执行
package data;
import java.util.InputMismatchException;
import java.util.Scanner;
public class ExceptionDemo1 {
public static void main(String[] args)
{
System.out.println("Please input a num:");
Scanner scan=new Scanner(System.in);
int res=0;
try
{
//System.exit(0);执行这句代码finally语句块内容将不会被执行
int num=scan.nextInt();
res=10/num;
}
catch(InputMismatchException e)//键盘输入的数据类型不匹配时抛出的异常
{
System.out.println(e.getMessage());
}
catch(ArithmeticException e)//除数为0时抛出的数学异常
{
System.out.println(e.getMessage());
}
catch(Exception e)//把确定可能抛出的异常类放在基类Exception前面,用基类Exception捕获未知的异常
{
System.out.println(e.getMessage());
}
finally
{
//finally代码块无论如何都会执行,除非try块中有System.exit(0);
//释放资源,比如关闭打开的文件,删除一些临时文件等
System.out.println("result:"+res);
}
}
}
(1)使用printStackTrace方法可以显示异常调用栈的信息;(得到异常出现的位置)
(2)使用toString方法可以得到异常处理的字符串表示;(得到异常所属的类)
(3)使用getMessage方法可以得到异常对象中携带的出错信息。(得到异常信息)
一个使用自定义异常类的程序:
public class yichang
{
public static void main(String[] args)
{
//创建一个自定义异常对象
MyException me=new MyException("自定义异常");
//获取自定义异常信息
System.out.println("自定义异常对象携带的错误信息为:"+me.getMessage());
System.out.println("自定义异常的字符串表示为:"+me.toString());
}
}