Java小白学习笔记(七)——异常的处理

java中编译错误分为两种
1)编译错误:语法错误导致的
2)运行时错误:程序运行过程中发生错误

异常:运行时发生的错误,而非编译时发生的错误
危害:程序被终止,内存泄漏

异常类的继承关系
1.Throwable:(可被抛出的异常或类)(父类)

2.Error:指应用程序运行期间发生的严重错误,如虚拟机内存耗尽、堆栈溢出,一般是灾难性的(子类)

3.Exception:可以通过异常出处理机制管理(子类)
1)RuntimeException:非检查性异常,通过反复测试,能够把所有这样的异常排除掉
2)以IOException为代表的异常:检查性异常,依赖于程序的运行环境,无论如何也不不可能通过测试排除掉

异常处理机制
1)异常如何产生:
在程序运行过程中,如果发生异常事件系统就会发出异常报告,这时候系统将生成一个异常处理对象,该对象封装了异常事件处理事件的信息,并将其提交给java运行时系统

2)异常处理方式:
a)自行处理
把可能发生异常的语句封入到try块中,而处理异常的语句封入到catch块中
b)回避处理
在方法声明中包含throws语句,通过潜在的调用者,来处理异常

3)try…catch语句
a)catch块,是用来捕获并处理try块中抛出的异常的代码块,没有try块,catch块不能单独存在,可以有多个catch块,用来捕获不同类型的异常
b)每次try块中跑出异常,系统会从上向下往每个catch块中传递参数,知道遇到一个类型匹配的catch块为止
c)通常在catch快中处理异常,记录错误到日志中,方便后续管理

4)finally语句
a)finally语句放在try…catch语句后
b)finally语句中的代码块,不管是否发生,是否被捕获总是要执行
c)即使try和catch块中使用了return或break语句,finally语句不会被执行
d)当前执行System.exit(0);表示退出系统,则finally语句不会被执行

5).throws语句
a)如果一个方法中的语句块在运行时可能发生异常,但是不确定如何处理,则可以再程序方法的声明后,使用throws关键字表名方法中可能有这些异常
b)throws语句后面可以跟多个异常类型,中间用逗号分隔

6).throw语句
a)异常是使用throw语句抛出的,可以使用throw语句引发明确的异常
b)throw语句用在方法体中,表示方法体语句处理

7)使用异常处理机制管理两种异常(检查兴异常,非检查性异常)
a)非检查性异常:可以处理,也可以不处理(需要通过测试来解决)
b)检查性异常:必须处理(要么执行处理,要么回避处理),否则编译错误
c)为什么不都是用异常处理机制处理?
大量使用异常处理语句会使得代码的可读性差
对代码进行异常检查会使得编译较慢

8)异常对象的常用方法
a)printStackTrace():打印栈的跟踪信息
b)getMassage():得到异常消息

9)方法调用堆栈:
方法A调用方法B的时候,只有方法B完成的时候,方法A才能完成(先执行的后完成,后执行的先完成)

在方法调用堆栈中的某个方法中的语句抛出异常,会导致所有方法都不能正常结束,如果不想出现这种情况,就要使用java的异常处理机制进行处理

10)自定义异常
如果java提供的异常类悉尼港不能满足程序设计的需要,可以定义自己的异常类型

用户自定义的异常应继承Exception类或子类

检查性异常通常继承:Exception
非检查性异常通常继承:catchRuntimeException

注意:
自定义异常的名称很重要,要尽可能反应异常功能
根据设计需要,巨鼎父类是检查性异常还是非检查性的异常
可以添加一个有参数的构造方法,用来传递异常消息
应该自己检测异常发生的条件,抛出异常

注意:
在使用多个catch块进行处理的时候,异常的父类写在下面,子类写在上面,否则编译报错

异常处理常见形式:
try…catch…
try…catch…finally
try…finally

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值