Exception Handling

目录

1.Runtime Exception and Other Exceptions

2.Checked and unchecked exceptions

2.1 异常发生处理方法:

2.2 Unchecked exceptions(Errors and Runtime Exceptions)

2.3 Checked exceptions

        3.Declaring Checked Exceptions by throws

        4.Catching Exceptions

        5.finally Clause


异常是指程序执行中的非正常事件,导致程序无法再按预想的流程执行

1.Runtime Exception and Other Exceptions

(1)运行时异常:是程序员对代码处理不当造成的。可以在代码中提前进行验证避免故障发生。
(2)其他异常:是由外部原因造成的。即使在代码中提前加以验证(如:文件是否存在),也无法完全避免失效发生。

2.Checked and unchecked exceptions

2.1 异常发生处理方法:

(1)捕获并处理这个异常
(2)通过声明您的方法抛出异常来告诉编译器您无法处理异常

2.2 Unchecked exceptions(Errors and Runtime Exceptions)

(1)不需要在编译的时候用try…catch等机制处理Unchecked exceptions。

(2)在编程和编译的时候,IDE与编译器均不会给出任何错误提示。

(3)异常将在运行过程中被发现。然后必须重构代码以删除这些错误。

(4)Unchecked异常也可以使用throws声明或try/catch进行捕获,但大多数时候是不需要的,也不应该这么做。

(5)如果客户端对出现的这种异常无能为力,那么采用unchecked exception。

  (6)尽量使用unchecked exception来处理编程错误。

(7)unchecked exception来处理程序中的错误会使代码更简洁可读性好。

2.3 Checked exceptions

2.3.1
(1)需要在编译的时候用try…catch等Checked exceptions。
(2) 如果客户端可以通过其他的方法恢复异常,那么采用checked exception。即错误可预料,但无法预防,但可以有手段从中恢复时使用。
(3) 如果客户端对某种异常无能为力,可以把它转变为一个unchecked exception,程序被挂起并返回客户端异常信息。
(4) Checked exception应该让客户端从中得到丰富的信息,以做出相应的处理。
2.3.2异常处理操作:
(1)throws:声明“本方法可能会发生XX异常”
(2)throw: 抛出XX异常
(3)try, catch, finally: 捕获并处理XX异常

3.Declaring Checked Exceptions by throws

(1)要写在后置条件里。

(2)程序员必须在方法的spec中明确写清本方法会抛出的所有checked exception,以便于调用该方法的client加以处理
(3)Unchecked异常代表存在bug(代码实现中或者client调用中) 不应该出现在 @throws or throws。
(4)如果方法可能抛出多个检查的异常类型,则必须在头中列出所有异常类。

 (5)方法需要抛出的异常:从其他函数传来的异常 和 自己创造的异常

4.Catching Exceptions

(1)try 中代码抛出异常,并被 catch 捕获后, try 中抛出异常代码之后的代码不会再执行,执行捕获异常的catch 中代码。
(2)如果 try 中没有抛出异常,所有 catch被跳过。如果try中抛出异常,但是没有catch能捕获,则方法结束。
(3)可以不在本方法内处理异常,而是简单的传递给调用方。
(4)如果父类型中的方法没有抛出异常,那么子类型中的方法必须 捕获 所有的 checked exception。
子类型方法中不能 抛出 比父类型方法更多的异常。
(5)本来catch语句下面是用来做exception handling的,但也可以在catch里抛出异常。

5.finally Clause

(1)当异常抛出时,方法中正常执行的代码被终止。
(2) Finally 部分的代码,是否捕获异常都会被执行。
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值