- 1、本文档共44页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
4 第三讲 异常
第三讲 异常、IO和递归 第4篇 17~19章 学习目标 Java异常的处理机制 Java异常的分类及其处理 捕获和抛出异常的使用 创建并抛出异常 自定义异常 为什么需要异常 软件程序肯定会发生错误/问题 Java的哲学之一:捕捉错误的最佳时刻是编译时刻,但不是所有的错误可以在编译时刻捕获,有些只能到程序运行时才能得到处理 以往需要由程序员完成的程序出错情况判别,在Java中改为由系统承担。通过系统抛出的异常,程序可以很容易地捕获并处理发生的异常情况。 为什么需要异常 Java异常处理的目的 提高程序的健壮性 可以在catch和finally代码块中给程序一个修正机会,使得程序不因异常而终止或者流程发生预期以外的改变 为程序的开发维护提供了方便 一般通过异常信息很快就能找到出现异常的问题(代码)所在 Java异常处理是Java语言的一大特色,也是个难点,掌握异常处理可以让写的代码更健壮和易于维护 什么是异常 Java程序运行过程中可能会发生两种错误 致命错误:错误(Error) 程序不能简单地恢复执行,无需程序员干预 例:内存空间不足、内存溢出等导致程序异常中断 非致命错误:异常(Exception) 程序在修正后可恢复执行,一部分系统自动处理,一部分程序员处理 例子:数组越界等导致程序中断执行、网络连接中断、打印设置忙碌中 什么是异常 异常是在程序运行过程中发生的异常事件,比如除0溢出、数组越界、文件找不到等,这些事件的发生将阻止程序的正常运行。为了加强程序的鲁棒性,程序设计时,必须考虑到可能发生的异常事件并做出相应的处理。 什么是异常 正常情况之外的一种“异常”。在问题发生的时候,我们可能不知具体该如何解决,但肯定知道已不能不顾一切地继续下去。此时,必须坚决地停下来,并由某人、某地指出发生了什么事情,以及该采取何种对策。 由于要强制捕获很多异常,开发者很难忽略他们的异常处理代码。这些异常就是我们常说的已检查异常(checked?exceptions) 什么是异常示例1 什么是异常示例2 什么是异常示例3 public class ExTest { public static void main(String[] args) { String friends[] = { lisa, bily, kessy }; for (int i = 0; i 5; i++) { System.out.println(friends[i]); } System.out.println(\nthis is the end); } } 最简单处理异常的方法 使用if-else分别处理正确的和错误的情况 优点:不需要其它机制 缺点:程序的可读性和可维护性很差 If else的缺陷 无法穷举所有的而一场情况,程序健壮性总是不够 错误处理代码和业务代码混杂,严重影响程序的可读性,增加程序维护的难度 17.1 异常概述 每一个异常就是jdk中某个类的对象,属于某个类的类型,这个对象由系统自动生成 Java中的异常类可分为两大类: Error Exception 它们都直接或间接地继承于Throwabel类 17.1 异常概述 异常分类 Error表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。 Exception表示一种设计或实现问题,即如果程序运行正常,从不会发生的情况。(由程序错误导致的异常)例如: 对负数开平方根 空指针访问 错误的数据类型等 Error类被认为是不能恢复的严重错误,如系统内部错误和资源耗尽错误等。不应该抛出这种类型的错误,而是让程序中断。 ------不是程序员的责任 Exception类定义可能遇到的轻微错误,分为派生自 RuntimeException 类的异常和非派生自RuntimeException类的异常。可以写代码来处理异常并继续程序执行,而不是让程序中断。 ------是程序员的责任 17.1 异常概述 Checked异常和Runtime异常体系 Java中凡是继承自Exception而不是继承自RuntimeException的异常类都是非运行时异常 凡是继承自RuntimeException的异常类都是运行时异常 两种异常的处理方式是不一样的 17.1 异常概述 17.2 异常处理机制 Java通过面向对象的方法来处理异常。 Java程序的执行过程中如出现异常,会自动生成一个异常类对象,该异常对象将被提交给Java运行时系统,这个过程称为抛出(throw)异常。 运行时系统在方法的调用栈中查找,从生成例外的方法开始进行回朔,直到找到包含相应例
文档评论(0)