Java实用教程第13讲异常处理和断言

Java实用教程第13讲异常处理和断言

ID:41233048

大小:281.00 KB

页数:20页

时间:2019-08-20

Java实用教程第13讲异常处理和断言_第1页
Java实用教程第13讲异常处理和断言_第2页
Java实用教程第13讲异常处理和断言_第3页
Java实用教程第13讲异常处理和断言_第4页
Java实用教程第13讲异常处理和断言_第5页
资源描述:

《Java实用教程第13讲异常处理和断言》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第13讲异常处理和断言13.1java的异常13.2异常处理机制13.3捕获所有异常13.4自定义异常13.5异常的限制13.6断言13.7本讲小结发现错误的最佳时机是编译阶段,但编译时期并不能找出所有错误,有些错误是在运行时刻才被发现,例如数组访问时越界,要访问的文件不存在等。这就需要在程序运行期间处理这些可能发生的错误。13.1Java的异常Java异常类层次结构图13.2.1捕获异常在Java中,异常通过try-catch语句捕获对于有多个catch子句的异常程序而言,异常类的catch子句放在前面,同时尽量将捕获相对“高层”(类继承层次中的

2、父类)的异常类的catch子句放在后面13.2.2finallytry-catch语句后还可以跟finally子句,它表示无论是否出现异常,都应当执行下面几种情况,finally语句块不运行:(1)在finally语句块中发生了异常。(2)在前面的代码中用了System.exit()(3)程序所在的线程死亡。(4)关闭CPU。异常处理语句的语法规则总结:(1)必须在try之后添加catch语句块或finally语句块,两种语句块最少有一个存在;(2)必须遵循顺序:若代码同时使用catch和finally块,则必须将catch语句块放在try语句块之

3、后;(3)一个try可以引导多个catch语句块;(4)try-catch-finally结构可嵌套使用;(5)在try-catch-finally结构中,可重新抛出异常。(6)除了下列情况,finally语句块总要执行:在finally语句块中发生了异常;在前面的代码中用了System.exit()退出程序;程序所在的线程死亡;关闭CPU。异常处理语句执行顺序总结:(1)当try没有捕获到异常时:try语句块中的语句逐一被执行,程序将跳过catch语句块,执行finally语句块和其后的语句;(2)当try语句块里的某条语句出现异常,而没有处理此

4、异常的catch语句块时,此异常将会抛给JVM处理,finally语句块里的语句还是会被执行,但finally语句块后的语句不会被执行;(3)当try语句块里的某条语句出现异常,并且存在处理此异常的catch语句块时,程序将跳到catch语句块,从第一个catch语句块开始,从上到下找到与之对应的catch,其它的catch语句块将不会被执行,而try语句块中,出现异常之后的语句也不会被执行,catch语句块执行完后,执行finally语句块里的语句,最后执行finally语句块后的语句13.2.3声明异常如果一个方法可能会出现异常,但没有能力处理

5、这种异常,或者想把异常集中起来一块处理,可以使用关键字throws声明这个方法可能会产生异常。多个异常可使用逗号分割。throws语句的语法格式为:myMethod()throwsException1,Exception2,..,ExceptionN{}方法名后的throwsException1,Exception2,...,ExceptionN为声明要抛出的异常类型列表。13.2.4抛出异常JVM可以抛出异常,当需要抛出某个异常时,也可以借助关键字throw来抛出某个异常对象。程序会在throw语句后立即终止,它后面的语句得不到执行13.3捕获所

6、有异常因为向上转型,所有异常类对象都能够向上转型为Exception类型,所以通过捕获Exception类型,就可以捕获所有异常。如果有多个catch,最好把Exception类型语句放在所有catch的后面。13.3.1异常轨迹可以调用Exception的父类Throwable中的方法获得异常的详细信息和调用栈轨迹:(1)voidprintStackTrace():将此throwable及其追踪输出至标准错误流。(2)voidprintStackTrace(PrintStreams):将此throwable及其追踪输出到指定的输出流。(3)voi

7、dprintStackTrace(PrintWriters):将此throwable及其追踪输出到指定的PrintWriter。通过getStackTrace()方法可以获得printStackTrace()的信息13.3.2重新抛出异常有时希望把捕获的异常对象重新抛出,交给上一级环境中的异常处理程序去处理。异常对象被重新抛出后,所有信息都能够被保持,所以在上一级的异常处理程序中能够得到原有异常对象的所有信息。13.3.3异常链捕获一个异常对象后抛出另外一个异常对象,并且希望把原异常对象抛出点的调用栈信息保存下来,这被称为异常链。在JDK1.4之后

8、,Throwable及其子类在创建异常对象时,都能够接收一个对象作为参数,这个参数能够表示原始异常,能够传递给信息异常。通

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。