/*
1,异常是那些不正常情况的信息,引发原因等。
Throwable
|--Error
|--Exception
2,异常的处理
java 提供了特有的语句进行处理。
try
{
需要被检测的代码;
}
catch(异常类 变量)
{
处理异常代码;(处理方式)
}
finally
{
一定会执行的语句;
}
3,对捕获到的异常对象进行常见方法操作。
String getMessage():获取异常信息。
在函数上声明异常。
便于提高安全性,让调用时进行处理。不处理编译失败。
对多异常的处理。
1,声明异常时,建议声明更为具体的异常,这样处理的可以更具体。
2,对方声明几个异常,就对应几个catch块,不要定义多余的catch块。
如果多个catch块中的异常出现继承关系,父类异常catch块放在最下面。
建议在进行catch处理时,catch中一定要定义具体的处理方式。
不要简单定义一句e。printStackTrace(),
也不要简单的书写一条输出语句。
*/
class ExceptionDemo3
{
public static void main(String[] args)//throws Exception//异常有两种处理方式,要么捕捉处理,要么抛出。
{
Demo d=new Demo();
try
{
int x=d.div(4,0);
System.out.println("x="+x);
}
catch (ArithmeticException e)
{
System.out.println("除零了");
System.out.println(e.getMessage());// /by zero;
System.out.println(e.toString());//异常名称:异常信息。
e.printStrackTrace();//异常名称,异常信息,异常出现的位置。
//其实jvm默认的异常处理机制,就是在调用printStackTrace方法。
//打印异常的堆栈跟踪信息。
}
catch(ArrayIndexOutOfBoundsException e)
{
System.out.println(e.toString());
System.out.println("角标越界");
}
/*catch(Exception e) //如果多个catch块中的异常出现继承关系,父类异常catch块放在最下面。
{
System.out.println("hahaha:"+e.toString());
}
*/
System.out.println("over");
}
}
class Demo
{
int div(int a,int b)throws ArithmeticException,ArrayIndexOutOfBoundsException//在功能上通过throws的关键字声明了该功能有可能会出现问题。
{
int[] arr=new int[a];
System.out.println(arr[4]);
return a/b;
}
}
|
|