异常的处理与应用
/*
*1.异常:程序在运行时出现不正常情况。
*2.异常由来:java对不正常情况进行描述后的对象体现。
*3.不正常情况的量汇总描述方式:严重情况称为:Error,一般不编写针对性的代码对其进行描述。
*不严重情况称为Exception,可以使用针对性的处理方式进行处理。
*4.Throwable类的两个子类:Error类和Exception类。
*5.异常的处理:java提供了特有的语句进行处理。
*try{
*需要被检测的代码
*}
*catch(异常类 变量){
*处理异常的代码;(处理方式)
*}
*finally{ 一定会执行的代码,通常用来关闭资源}
*6.对捕获到的异常对象进行常见的处理。
*7.在函数上声明异常。
*8.便于提高安全性,调用时进行处理,不处理编译失败。
*9.对对异常的处理:
*a.声明异常时,建议声明更为具体的异常,这样处理的可以更加具体。
*b.对方声明几个异常,就对应几个catch块。如果多个catch块中的异常出现继承关系,父类异常catch放在最下面。不要定义多余的catch块。
*c.建议在catch处理时,catch中一定要具体处理方式。
*/
class Demo
{
int div(int a,int b) throws ArithmeticException,ArrayIndexOutOfBoundsException//在功能下通过throws的关键字声明了该功能有可能会出现问题。
{
int arr[]=new int[a];
System.out.print(arr[4]);//数组越界异常
return a/b;//除零异常
}
}
public class ExceptionDemo {
public static void main(String args[])
{
Demo d=new Demo();
try{
int x=d.div(4,0);
System.out.println("x="+x);
}
//对除零异常进行针对性处理
catch(ArithmeticException e){
System.out.println("chuling啦");
System.out.println(e.toString());
}
//对数组越界异常进行针对性处理
catch(ArrayIndexOutOfBoundsException e)
{
System.out.println("数组越界了啦");
//System.out.println(e.getMessage());
System.out.println(e.toString());
//e.printStackTrace();
//异常名称,异常信息,异常出现的位置
//其实jvm默认的异常处理机制,就是在调用pirntStackTrace方法
//打印异常的堆栈的跟踪信息。
}
//这是所有异常的父类,所以他能处理所有异常,但是不够具体。
catch(Exception e)
{
e.printStackTrace();
}
//程序必须执行到的代码块
finally
{
System.out.println("over");
}
}
}
//程序运行出来之打印了数组越界的异常,因为程序一遇到异常立马停止运行了。