- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第九章异常处理-天津工程职业技术学院
9.1 Java异常处理的基本知识 一、异常的概念: 1. 含义:程序在运行过程中所发生的错误事件(如数组越 界、文件操作时未找到文件、除法溢出等),而这些错误在 设计时不能准确地识别出但又可能会发生或者不会发生。 2. 正确理解程序设计中的三种错误: 语法错误(编译时的错误); 逻辑错误(运行时的错误); 异常错误(运行时的错误但取决于执行环境)。 3. 异常的特点(以“人身保险”为例加以说明异常的特性) ①? 程序在运行过程中所发生的错误事件; ②?程序员在编程时无法预知它是否会产生; ③? 产生与否取决于用户当时的执行环境。 4. Java中的异常处理: 它是面向对象方式的错误处理方法。 异常处理的优点(OOP方式的错误处理编程): 能将“错误处理”代码与“常规功能”代码相分离; 能将错误沿调用栈向上传播; 能按错误类型和错误对象分组,分门别类地加以处理。 允许类似于 Switch Case 语句的分类过滤错误例外 非结构化错误处理的缺点 代码很难阅读、调试和维护 容易忽视错误 1. 常见RuntimeException 2. 常见非运行时异常 3. Error 9.2 异常类的产生、捕获和处理 一、基本概念 1. 异常处理机制:主要体现在“抛出异常”并“捕获异常”这两个层次。 2. 抛出异常:当程序执行过程中产生异常时,运行系统将抛出异常类对象(它代表某一异常类型的错误事件)。 3. 捕获异常:用户程序或运行系统可以捕获该异常类对象(在函数的调用栈中查找能处理此异常事件的程序为止)并相应地给出处理的方法(代码)。 4. 如何捕获异常:采用try、catch、 finally语句块。 二、try、catch、 finally语句块的用法 1. try语句块:它指定可能会产生异常的语句 范围,也即为catch规定异常捕获的语句范围。 编程格式: try { 可能会产生异常的语句块; } 2. catch语句块:它指明需要捕获异常事件的类型并相应地给出处理的方法(代码)。 编程格式: catch(异常事件的类型 对象名) { //并相应地给出处理的方法(代码);} 示例Throwable类的方法 注意: ① 应从特殊到一般进行匹配(先将特殊类型的异常事件放在前面,再一般类型的异常事件)。② try 与catch之间不能有其他语句,不能被隔断 try { } int x=1; //错误,不能被隔断 catch(Exception e) { } 示例1 示例2 3. finally:它指定一代码块,不管是否有异常产生或是否捕获住该异常,程序都从此处继续向后执行。从而达到提供统一的出口(如关闭文件、清除系统资源等)。 示例 9.3 程序中对异常处理的方法 当编程使用某一个带有异常定义的函数时,程序员可以有如下两种处理异常的方法。 方法一:通过try、catch、finally语句块,捕获住该异常。 方法二:不捕获和处理该异常,但必须继续上传(递交给上一级的调用者来处理),这可通过throws语句来声明所抛出的异常。 一、声明和抛出异常 1. 异常声明: 编程时应该在可能会出现异常的或者不捕获和处理异常的函数声明中给出异常的定义(或声明)。 2. 定义格式: 在函数声明的后面采用“throws 异常类型名列表”来定义异常。 如:返回类型 函数名(形参)throws 异常类 { 函数体定义; } 3. 异常的抛出 ① 系统自动抛出的异常: 程序中出现系统中定义的异常时,可以由系统自动来抛出它。 ② 对于在函数定义时采用throws所声明的某个异常类型时,在其函数体中必须使用“throw 异常事件(对象名)” 来抛出该种类型的异常事件(即程序员自己抛出程序中定义的自己的异常事件),以便上一级的调用者来捕获并处理它。 public class Demo1 //异常用法举例 另一个例子 { static int a,b,c; public static void main(String args[]) { try { a=100; b=Integer.parseInt(args[0]); if(b==13) throw(new ArithmeticException()); c=a/b; System
原创力文档


文档评论(0)