版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第6章例外处理、java中的例外处理、第2章主要说明、Case:TryCatchDemo.java 6.1例外处理概览例外处理6.2例外分类和使用6.3级例外处理机制处理例外的进一步讨论、Java中的例外处理、3,6.1例外处理概览、6.1.1例外是程序Java提供了处理异常以处理编程时遇到的错误的独特机制。异常错误、Java中的异常处理、4,6.1异常处理概述、Java中的错误语法识别错误执行错误逻辑错误、Java中的异常处理、5,6.1异常处理概述、Java中的错误语法识别错误:由代码结构中的问题引起:错误的关键字拼写、标点符号丢失等。public class showsyncerros
2、public static void main(string args)I=30;system . out . print(I 4);Java中的异常错误处理,6,6.1异常错误处理概览,了解Java中的错误执行错误:输入错误,导致程序异常中止(0除外)的错误。public class showmruntimeerros public static void main(string args)int I=1/0;Java中的异常错误处理、7,6.1异常错误处理概述、了解Java中的错误逻辑错误:程序不能按预期运行的原因有多种。Public类showslogicerros public stat
3、ic void main(string args)intnumber 1=3;int number 2=3;Number2=number1 number2system . out . print ln( number 2 is number 2);Java中的异常处理,8,6.1异常处理概述,Java中的错误语法识别错误:编译器显示错误位置和原因执行错误: JVM定位错误逻辑错误:调试,Java中的异常处理,在9,6.1.2中使用故障处理的原因:错误处理和一般代码分离。例如,可能有处理文档的程序,如果查看进程,则此进程可能有错误。打开自述文件。打不了怎么办?判断大小。大小判断失败怎么办?(磁带
4、)内存分配;内存不足,无法读取到内存中。无法读取文件。文档未关闭。即可从workspace页面中移除物件。解决方法:编写大量if语句。即可从workspace页面中移除物件。Java中的异常错误处理,10,检测和更正现有错误,error codetype readfile initialize error code=0;打开文件。If(文件打开成功)文件长目标(if)分配内存if(内存分区成功)读取内存if(文件读取失败)error code=-1;/文件读取判断else error code=-2;/内存分配失败else error code=-3;/无法获取长文档关闭文件。If(文件未关闭
5、,Java中的异常处理,11,请注意,在上述过程中只有5个代码真正有用。其余的都判断错误,主要逻辑被错误处理代码混淆,程序可读性下降,错误返回信息的杨怡太少。Java使用异常处理将错误处理与一般代码隔离开来,并使用名为try、catch、finally、throw和throws的五个关键字管理Java异常处理。Java中的异常处理,12,Java的解决方案,readFile /结构清晰,代码杨怡较少,无需自行判断。打开Try文件;判断大小。分配内存。读取内存。关闭文件;Catch(文件打开失败)处理代码;Catch(无法调整大小)处理代码;Catch(内存分配失败)处理代码;Catch(读取失
6、败)处理代码;Catch(文档关闭失败)处理代码;Java中的异常错误处理;13,6.2异常错误类的分类和层次结构;6 . 2 . 1异常错误类的层次结构是JDK中每个包中定义的异常错误类,所有异常错误类都直接或间接从java.lang.Throwable类继承。如果Java程序遇到意外错误,则实例化从Throwable类继承的对象。Java中的异常类可以分为两大类:Error:错误Error类表示在执行环境中发生的错误,该执行环境通常是系统错误或非常严重的错误,捕获并不处理此错误,Java虚拟机生成并抛出此错误,包括系统崩溃、动态链接故障、虚拟机错误等,Java程序不处理此错误。Except
7、ion:异常Exception类表示可以捕获和恢复的一些异常,是一般程序中的可预测问题。对于例外,可以分为以下两类:(1)运行时异常:可以在运行时系统中直接处理,而无需程序处理。(2)运行时异常:必须由程序处理。否则,编译器将指示错误。Java中的异常错误处理,14,异常错误类的结构层次,Java中的异常错误处理,15,6.2.2 Exception类,1。Exception类的配置方法Exception类有两种配置方法:Exception():没有指定消息字符串,直接配置Exception。Exception:根据参数提供的消息字符串创建exception。例如,Exception myEx
8、p=new Exception(“异常!”);Java中的异常错误处理,16,2。一般方法Exception类别的方法都继承自Throwable类别,而且您可以提供一些例外资讯给程式,传回String getMessage():为此例外储存的说明字串。String toString():返回异常对象的详细信息,其中包含表示所遇到问题的说明性消息的字符串。Void printStackTrace():将引发异常的路径(即引发异常的方法调用嵌套序列)打印到标准错误流。例如:system . out . print ln(my exp . get message();此语句描述了例外对象myExp的
9、例外信息的打印输出,在屏幕上显示“例外!”,即可列印区段。Java中的异常处理、17,6.2.3自定义异常类和程序可以创建自定义异常类。自定义异常类直接或间接继承Exception类。您可以通过以下方式自定义例外类:(1)创建继承Exception类或其他已存在异常类的子类。(2)使用该类中相应的错误消息作为输入,创建调用超类的配置方法的无参数基本配置方法。(3)使用适当的错误消息作为输入(包括输入的字符串),添加另一个具有字符串参数的配置方法以调用超类的相应配置方法。Java中的异常处理,18,例如,定义从Exception类继承的自定义异常类。class my exception exte
10、nds exception my exception()super(“数据错误!”);my exception(string exp)super(exp);Java中的异常处理,19,6.3异常的处理机制会在Java程序执行期间遇到可识别的执行错误时创建对象,即具有与该错误对应的异常类的对象。也就是说,将引发异常。创建了一个异常对象后,系统必须有相应的机制来处理它,并确保不会出现死机、死循环或其他操作系统损坏,从而确保整个程序运行的安全性。这是Java的异常处理机制。Java中的异常错误处理、20、Java中处理异常的方法有两种:捕获异常、声明忽略异常。捕获异常,现场解决,并让程序继续运行。声
11、明引发异常。也就是说,将例外发送到外部后,可能会引发例外。方法在调用的环境中处理。Java中的异常处理,21,6.3.1捕获异常,可以沿方法的调用堆栈逐层反向跟踪,以查找从Java运行时系统获取异常对象时处理该异常的代码。如果发现可以处理此类型异常的方法,运行时系统会将当前异常对象传递给此方法进行处理。此过程称为捕获异常。这是一种积极的异常处理机制。如果Java运行时系统找不到捕获异常的方法,运行时系统将关闭,相应的Java程序也将关闭。Java中的异常错误处理,22,捕获异常错误通过try-catch-finally语句实现。,处理异常的程序结构如下:try /监视的程序块、此区域内发生的异
12、常错误、由catch中指定的程序处理的异常错误类型和标识符(catch)/异常错误catch(要处理的异常错误类型和标识符)处理/异常错误finally /最终处理、Java中的异常错误处理try捕获异常的第一步是选择使用try捕获异常的范围,并且可以引发异常的所有语句都放在try模块中。Try模块中的语句是要在正常程序进程中执行的语句,但在执行过程中可能会引发异常。2.catch(必需)每个try代码块可以包含一个或多个catch语句,用于处理try代码块生成的异常事件。Catch语句只需要表示可以捕获的异常类型的表单参数。此类必须是Throwable的子类,该子类通过运行时系统中的参数值将
13、废弃的异常对象传递给catch块。Java中的异常错误处理、24、try-catch-finally语句、catch块中处理异常对象的代码,与其它对象一样,可以访问一个异常对象的变量或调用其方法。GetMessage()是类throwinable提供的方法,用于获取有关异常事件的信息,类throwinable提供方法printStackTrace(),用于在发生异常事件时跟踪执行堆栈的内容。示例:Java中的异常错误处理,25,try-catch-finally语句,try.文件不完整执行e(catch)system . out . print ln(message : e . get mes
14、sage();e . printstacktrace(system . out);catch(io exception e)system . out . print ln(e . get message();Java中的异常错误处理,26,try-catch-finally语句,catch语句的顺序:捕获异常的顺序与catch语句的顺序相关,捕获一个异常时,其馀catch语句不再匹配。因此,在对catch语句排序时,必须捕获最特殊的异常,然后逐渐一般化。换句话说,通常先排列子类,然后再排列超类。捕获Java中的异常处理,27,try-catch-finally语句,3.finally(可选)异
15、常的最后一步是通过finally语句为异常处理提供统一的出口,以便在控件移动到程序的其他部分之前统一管理程序的状态。无论Try代码块中是否发生了异常事件,都会执行finally块中的语句。Case:范例6.1 TryCatchSequence。java,处理Java中的异常错误,引发28,6.3.2声明异常,1。引发异常如果Java程序运行期间发生异常事件,则会生成异常对象。生成的异常对象将传递到Java运行时系统,此异常生成和提交过程称为忽略异常。2.忽略异常如果您不知道声明的方法如何处理引发的异常,则可以在声明方法时声明忽略异常(throws)。这是负异常处理机制。Java中的异常处理,2
16、9,1。抛出和抛出异常是生成异常对象的过程,它可以首先由异常对象、异常或虚拟机生成,也可以由特定类的实例生成,或者在程序中生成。在方法中,异常对象throw通过throw语句实现。例如:io exception e=new io exception();throw e;您可以掷回的例外必须是Throwable或其子类别的实体。以下语句在编译时生成语法错误:throw new String(向箭头)。Java中的异常处理,30,在同一方法中引发异常和处理异常。Case:示例6.2 SeqStack.java,java中的异常处理,31,2。声明,如果一个方法生成了异常,则引发异常。但是,此方法不知道如何正确处理此异常事件。在这种情况下,必须声明忽略异常,以便异常对象可以在调用堆栈中向后传播,直到捕获到相应的方法。换句话说,如果抛出异常的方法和处理异常的方法不是相同的方法,则必须声明抛出异常。使用方法声明的throws子句指定。例如,public intread () throws exception.可以在Java的异常处理,32,throws子句中同时表示多个异常(以逗号分隔)。示例:public static void main(string args)throws exception,inde
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年公募基金费率改革:管理费与长期业绩持有人盈利挂钩机制设计
- 安徽省石台县重点中学2026年初三5月考化学试题含解析
- 山东省阳谷县2025-2026学年初三下学期第一次综合检测试题化学试题含解析
- 北京市房山区张坊中学2026届初三五月月考化学试题试卷含解析
- 2026年故障穿越与电网支撑能力提升关键技术
- 2026年APC Nb₃Sn线材高场临界电流密度提升36%工艺解析
- 2026年纳米材料原位表征技术应用指南
- 2025年临床执业医师《妇产科学》模拟
- 2025年临床医学专升本《生理学》测试试卷
- 摄影师招聘面试常见问题
- 临床药师竞聘演讲
- 无人机uom合格证考试题库及答案
- 特种设备安全员守则(2025版)
- 2024全新msa培训课件
- 沥青拌合站培训课件
- (16)普通高中体育与健康课程标准日常修订版(2017年版2025年修订)
- 2025年江苏省高职提前招生中职类文化素质测试(英语)
- 《云南省上拉式外脚手架施工技术标准》
- 1 3数据采集与编码练习题 浙教版(2019)高中信息技术必修1
- 辽宁中考数学三年(2023-2025)真题分类汇编:专题06 几何与二次函数压轴题 原卷版
- 2025年一级建造师机电实务真题及答案解析
评论
0/150
提交评论