实训19 2018.4.19

异常

  Throwable下有两个直接子类:Exception和Error。

  异常分为编译时异常和运行时异常。运行时异常不需要显式的抛出语句,可以自动抛出;如果显式地抛出运行时异常,编译器也不会强制程序员进行处理;如果出现运行时异常,解决办法就是修改相应的代码。而编译时异常会导致无法编译通过,所以需要及时处理。所以说,运行时异常比较特殊。

  

 

  处理异常的方式有两种:一种是:try-catch(-finally),另一种是在定义方法时使用抛出声明throws,把异常抛给上一级,让上级进行处理,如:main()方法调用使用throws声明抛出了异常的方法func(),那么func()会把产生的异常抛给main(),如果main()处理不了,会继续抛给JVM,JVM一般处理不了,直接显示异常并终止程序。注:在throw抛出异常的地方,如果不使用try-catch进行处理,那么程序会在throw处终止并向上抛出异常。(在某种意义上说,throw和return的语义相同。只不过,return是正常返回,而throw是异常退出。)

  不管try-catch如何处理异常,finally都会执行其代码块中的代码。(但是如果在try-catch中使用System.exit(),那么finally不再执行)finally一般用作清空资源所占内存。

   继承中的异常(编译时异常,不包括运行时异常):

    1. 当父类的方法抛出异常时,如果子类重写该方法:子类可以选择不抛出该异常。(即使不写也能抛出相应异常且不会报错。)如果子类选择抛出异常,那么抛出的异常必须是父类中该方法对应的异常类或者其子类。

    2. 父类的方法不抛出异常的时候,子类不能抛出任何异常

    3. 父类中方法不抛出异常,但子类重写该方法时又要抛出异常,此时不能用throws声明,只能使用try-catch处理异常。

 

Throwable类常用的方法:

  getMessage(): 打印出入的字符串

  toString(): 打印类名及传入的字符串

  printStackTrace(): 打印完整的异常栈轨迹

 

自定义异常类:

  异常类一般有两个构造方法:

    一个是无参构造方法,另一个是有参构造方法,参数是String类型对象。

  一般只需在构造方法中调用父类的构造方法,把参数传入,不用自己写逻辑。

 

   

  

 

 

  

 

转载于:https://www.cnblogs.com/goxxiv/p/8884416.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值