黑马程序员_异常

 

---------------------- android培训java培训、期待与您交流! ----------------------

 

 

异常

1.什么是异常

     异常是程序运行过程中抛出的一些错误一旦出现异常下面的代码将不再执行.

2.异常的分类

     ExceptionError有一个共同的父类Throwable,代表在程序中可以被抛出的对象.

     Error: 由虚拟机抛出的一些严重的错误程序中无法处理.

     Exception除了RuntimeException: 编译时异常编译时必须捕捉或声明.

     RuntimeException及其子类运行时异常编译时可以不处理.

3.抛出异常

    使用throw关键字可以抛出一个异常对象

    抛出一个异常可以通知当前方法的调用者

Throwsthrow的区别:

Throws使用在函数上;后面跟异常类,可以跟多个,用逗号隔开;

Throw使用在函数内;后面跟的是异常对象;

一般情况下,函数内出现异常,函数上需要声明;

4.处理异常

    在运行一段有可能出现异常的代码时我们可以对其进行处理处理方式有两种

    声明在当前方法签名最后使用throws关键字声明有可能出现的异常方法中调用其他方法如果出现异常当前方法中断将异常抛出

    捕捉将有可能出现异常的代码放在try代码块中后面跟上catch代码块捕捉有可能出现的异常如果try中代码出现异常就会执行catch代码;

Catch是用于处理异常,如果没有catch就代表异常没有被处理过,如果该异常是检查时异常,那么必须声明。

5.finally

    finally用来和try配合使用只要执行了try中的代码就一定会执行finally, 除非使用System.exit(0)退出Java虚拟机

    finally中也可以再使用try {} finally{} 代码块和循环嵌套模式用来执行多条必须执行的语句

try {

需要被检测的代码;

}

catch(异常类变量) {

处理异常的代码:(处理方式)

}

finally {

一定会执行的语句;

}

例:

class ExceptionDemo {

       public static voidmain(String[] args) {

              Demo d = new Demo();

              try {

                     int x = d.div(4,0);

                     System.out.println("x="+x);

              }catch(Exception e) {

                     System.out.println("除零了");

//异常名称,异常信息;

                     System.out.println(e);    

//异常名称,异常信息,异常出现的位置

//Jvm默认的异常处理机制,就是在调用printStackTrace方法;

                     e.printStackTrace();

 

              }

              System.out.println("over");

       }

       

}

class Demo { 

       int div(int a, int b) {

              return a/b;

       }     

}

输出结果:

除零了

java.lang.ArithmeticException: / by zero

java.lang.ArithmeticException: / by zero

        atDemo.div(ErrorDemo.java:19)

        atErrorDemo.main(ErrorDemo.java:6)

over

6.重写方法时抛出异常问题

     子类重写父类方法时不能抛出父类没有声明的异常

7.处理多个异常

     可以使用throws关键字声明抛出多个异常多个异常之间用","分隔

     可以将有可能出现异常的代码放在try后面跟上多个与之相对应的catch, 捕捉不同的异常注意如果多个catch中异常出现继承关系,捕捉时父类异常不能写在子类异常的上面

8.自定义异常

    如果希望抛出一个自己定义的异常对象那么可以声明一个类继承Exception或者RuntimeException

因为项目中会出现特有的问题,而这些问题并未被java所描述并封装对象,所以对于这些特有的问题可以按照java对问题封装的思想,将特有的问题,进行自定义的异常封装;

继承Exception的原因:

异常体系有一个特点:因为异常类和异常对戏那个都被抛出;

它们都具备可抛性,这个可抛性是Throwable这个体系中独有特点;

只有这个体系中的类和对象才可以被throwsthrow操作;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值