java异常

按照java一切皆对象的思想,错误也被封装在对象中

Error 是严重错误,比如虚拟机崩溃

Exception分为编译期异常和运行时异常(RuntimeException及其子类)

编译期异常必须处理,否则编译不通过,更不要说运行了。
运行期异常 可处理可不处理
为啥呢?
比如ArithmeticException,当你不把0作为分母就程序就可以安全运行,0做分母程序才GG

在这里讨论一下处理的情况:

1)消极处理 就是在方法上throws声明异常
2)积极处理 try-catch

对于1,调用者可以继续声明可能的异常,最终在main中如果还声明不处理,一旦出现错误,整个程序就会停掉。异常也会逐级向上抛,和方法调用的方向相反。

对于2 不多说

方法覆盖中,子类不能抛出比父类更多的异常,这里的更多指的是类型,而不是异常的数量

如何精确定位异常发生的地点?

1)你可以在最底层代码中就捕获异常,并打印异常操作信息,这样一些调用底层代码的
类可能发生逻辑错误或者意料之外的运行时异常,该怎么捕获?

2)使用throw new ArithmeticExcpetion(“自己写的异常信息”),在调用者中使用
System.out.println(e.getMessage);它只会打印自己写的异常,而不会打印堆栈信息,Message是一个封装异常消息的类

3)打印堆栈 e.printStackTrace()

这些都是定位和打印异常信息,如何在报异常时修正,程序重新步入正轨,而不是简单地打印?

个人觉得这就需要你在catch中根据逻辑编写修正代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值