/**
*
* 1.声明异常时,建议声明更为具体的异常,这样处理的可以更具体。
* 2,对方声明几个异常,就对应有几个catch块,多余catch块的不要定义
* 如果多个catch块中的异常出现继承关系,父类异常catch一定一定要放在最下面
* 要不然,你之后写的catch块都是多余的,没什么用。
*
*
* 注意:建议在进行catch处理时,catch块中一定要定义具体的处理方式。
* 不要简单定义一句 e.printStackTrace(),
* 也不要简单的就写一条输出语句。
运行结果:
*
* 1.声明异常时,建议声明更为具体的异常,这样处理的可以更具体。
* 2,对方声明几个异常,就对应有几个catch块,多余catch块的不要定义
* 如果多个catch块中的异常出现继承关系,父类异常catch一定一定要放在最下面
* 要不然,你之后写的catch块都是多余的,没什么用。
*
*
* 注意:建议在进行catch处理时,catch块中一定要定义具体的处理方式。
* 不要简单定义一句 e.printStackTrace(),
* 也不要简单的就写一条输出语句。
*/
class Demo2
{
//在功能上通过throws的关键字声明了该功能可能会出现问题。
//有可能发生不止一个问题,以下这种声明方式其实并不好,声明更为具体的异常
int div(int a,int b)throws ArithmeticException,ArrayIndexOutOfBoundsException
{
//人造异常一
int[] arr=new int[a];
System.out.println(arr[4]);
//人造异常二
return a/b;
}
}
public class Demo4_2 {
public static void main(String[] args) throws Exception {
Demo2 d=new Demo2();
try
{
int x=d.div(4,0);
System.out.println("x="+x);
}
//预先给人造异常二基本处理
catch(ArithmeticException e)
{
System.out.println(e.toString());
System.out.println("被0除了!!");
}
//预先给人造异常一基本处理
catch(ArrayIndexOutOfBoundsException e)
{
System.out.println(e.toString());
System.out.println("角标越界了!!");
}
catch(Exception e)
{
System.out.println("haha"+e.toString());
}
System.out.println("over");
}
}
运行结果: