(精品)java异常处理.ppt
《(精品)java异常处理.ppt》由会员分享,可在线阅读,更多相关《(精品)java异常处理.ppt(43页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、异常例外的概念例外的概念例外的分类例外的分类捕获例外捕获例外声明例外声明例外抛出例外抛出例外创建自己的例外创建自己的例外2例外的概念例外的概念 在进行程序设计时,错误的产生是不可避免的,在进行程序设计时,错误的产生是不可避免的,如何处理错误?把错误交给谁去处理?程序又该如何如何处理错误?把错误交给谁去处理?程序又该如何从错误中恢复?从错误中恢复?这是任何程序设计语言都要解决的问这是任何程序设计语言都要解决的问题。题。所谓错误,是在程序运行过程中发生的异常事件,所谓错误,是在程序运行过程中发生的异常事件,比如除比如除0溢出、数组越界、文件找不到等,这些事件溢出、数组越界、文件找不到等,这些事件的
2、发生将阻止程序的正常运行。为了加强程序的鲁棒的发生将阻止程序的正常运行。为了加强程序的鲁棒性(性(robust),),程序设计时,必须考虑到可能发生程序设计时,必须考虑到可能发生的异常事件并做出相应的处理。的异常事件并做出相应的处理。3例外例外public class ExceptionRaised public ExceptionRaised()public int calculate(int operand1,int operand2)int result=operand1/operand2;return result;public static void main(String args
3、)ExceptionRaised obj=new ExceptionRaised();int result=obj.calculate(9,0);System.out.println(result);异常情况异常情况异异 常常程序突然终止并将控制交程序突然终止并将控制交给操作系统给操作系统在运行时发生的错误在运行时发生的错误 4例外的概念例外的概念 在在C语言中,通过使用语言中,通过使用if语句来判断是否出现了错语句来判断是否出现了错误误,同时,调用函数通过被调用函数的返回值感知在同时,调用函数通过被调用函数的返回值感知在被调用函数中产生的错误事件并进行处理。但是,这被调用函数中产生的错误事件
4、并进行处理。但是,这种错误处理机制会导致不少问题,因为在很多情况下种错误处理机制会导致不少问题,因为在很多情况下需要知道错误产生的内部细节。通常,用全局变量需要知道错误产生的内部细节。通常,用全局变量Errno来存储一个异常事件的类型,这容易导致误用,来存储一个异常事件的类型,这容易导致误用,因为一个因为一个Errno的值有可能在被处理前被另外的错误的值有可能在被处理前被另外的错误覆盖掉。此外,即使最优美的覆盖掉。此外,即使最优美的C语言程序,为了处理语言程序,为了处理异常情况,也常常求助于异常情况,也常常求助于goto语句。语句。5n 没有错误处理的程序没有错误处理的程序:openTheFi
5、leopenTheFile;determine its size;determine its size;allocate that much memory;allocate that much memory;read-file read-file closeTheFilecloseTheFile;例外的概念例外的概念6例外的概念例外的概念n 以常规方法处理错误:以常规方法处理错误:openFiles;if(theFilesOpen)determine the length of the file;if(gotTheFileLength)allocate that much memory;if(
6、gotEnoughMemory)read the file into memory;if(readFailed)errorCode=-1;else errorCode=-2;else errorCode=-3;else errorCode=-4;else errorCode=-5;7n 观察前面的程序,大家会发现大部分精力观察前面的程序,大家会发现大部分精力花在出错处理上了花在出错处理上了n 只把能够想到的错误考虑到,对以外的情只把能够想到的错误考虑到,对以外的情况无法处理况无法处理n 程序可读性差程序可读性差n 出错返回信息量太少出错返回信息量太少例外的概念例外的概念8例外的概念例外的概念
7、Java通过面向对象的方法来处理程序错误,在通过面向对象的方法来处理程序错误,在Java中,错中,错误被称为例外(误被称为例外(Exception)。)。n 用例外的形式处理错误:用例外的形式处理错误:trytry openTheFileopenTheFile;determine its size;determine its size;allocate that much memory;allocate that much memory;read-File;read-File;closeTheFilecloseTheFile;catch(catch(fileopenFailedfileopen
8、Failed)dosomethingdosomething;catch(catch(sizeDetermineFailedsizeDetermineFailed)dosomethingdosomething;catch(catch(memoryAllocateFailedmemoryAllocateFailed)dosomethingdosomething;catch(readFailed)catch(readFailed)dosomethingdosomething;catch(catch(fileCloseFailedfileCloseFailed)dosomethingdosomethi
9、ng;9例外的概念例外的概念例外的分类例外的分类捕获例外捕获例外声明例外声明例外抛出例外抛出例外创建自己的例外创建自己的例外10例外的分类例外的分类 一个例外是由一个例外是由一个对象一个对象来代表的来代表的,所有的例外都所有的例外都直接或间接地继承自直接或间接地继承自Throwable类。类。在在Java类库的每个类包中都定义了例外类,这类库的每个类包中都定义了例外类,这些例外类分成两大类:些例外类分成两大类:Error类及类及Exception类,类,后者是后者是Java程序中需要大量处理的。程序中需要大量处理的。除了除了Java类库所定义的例外类之外,用户也可类库所定义的例外类之外,用户也
10、可以通过继承已有的例外类来定义自己的例外类,并以通过继承已有的例外类来定义自己的例外类,并在程序中使用(利用在程序中使用(利用throw产生,产生,catch捕捉)。捕捉)。11例外的分类例外的分类用户自己产生的异常用户自己产生的异常要处理要处理ThrowableErrorExceptionException缺省的异常缺省的异常处理程序处理程序由用户捕获或由用户捕获或声明并处理声明并处理不做处理不做处理RuntimeException12n Error:由由Java虚拟机生成并抛出,包括动态链接失败、虚拟机生成并抛出,包括动态链接失败、虚拟机错误等,虚拟机错误等,Java程序不做处理。程序不做
11、处理。n Runtime Exception:Java虚拟机在运行时生成的例外,虚拟机在运行时生成的例外,如被如被0除等系统错误、数组下标超范围等,除等系统错误、数组下标超范围等,其产生比较频繁,其产生比较频繁,处理麻烦,对程序可读性和运行效率影响太大处理麻烦,对程序可读性和运行效率影响太大。因此由系统。因此由系统检测检测,用户可不做处理,系统将它们交给缺省的异常处理程用户可不做处理,系统将它们交给缺省的异常处理程序(当然,必要时,用户可对其处理)。序(当然,必要时,用户可对其处理)。n Exception:一般程序中可预知的问题,其产生的例外可一般程序中可预知的问题,其产生的例外可能会带来意
12、想不到的结果,因此能会带来意想不到的结果,因此Java编译器要求编译器要求Java程序必程序必须捕获或声明所有的非运行时异常。须捕获或声明所有的非运行时异常。例外的分类例外的分类13例外的概念例外的概念例外的分类例外的分类捕获例外捕获例外声明例外声明例外抛出例外抛出例外创建自己的例外创建自己的例外14 Java的例外处理是通过的例外处理是通过3个关键词来实现的:个关键词来实现的:try-catch-finally。用用try来执行一段程序,如果出现例外来执行一段程序,如果出现例外,系统抛出系统抛出(throws)一个例外,可以通过它的类型来捕捉(一个例外,可以通过它的类型来捕捉(catch)并
13、处并处理它,或最后(理它,或最后(finally)由缺省处理器来处理。由缺省处理器来处理。trytry /接受监视的程序块接受监视的程序块,在此区域内发生在此区域内发生 /的异常的异常,由由catchcatch中指定的程序处理中指定的程序处理;catch(catch(要处理的异常种类和标识符要处理的异常种类和标识符)/处理异常处理异常;catch(catch(要处理的异常种类和标识符要处理的异常种类和标识符)/处理异常处理异常;finallyfinally /最终处理最终处理;捕获例外捕获例外try try 块块块块finally finally 块块块块catch catch 块块块块 无异
14、常无异常异常异常15捕获例外捕获例外 try语句 捕获例外的第一步就是用捕获例外的第一步就是用try 语句指定了一语句指定了一段代码,该段代码就是一次捕获并处理例外的范围。段代码,该段代码就是一次捕获并处理例外的范围。在执行过程中,该段代码可能会产生并抛弃一个或在执行过程中,该段代码可能会产生并抛弃一个或多个例外,因此,它后面的多个例外,因此,它后面的catch语句进行捕获时也语句进行捕获时也要做相应的处理。要做相应的处理。16捕获例外捕获例外-catchcatch语句语句1.每个每个try语句语句必须伴随一个或多个必须伴随一个或多个catch语句语句,用于捕获,用于捕获try代码块所产生的例
15、外并做相应的处理。代码块所产生的例外并做相应的处理。2.catch语句语句有一个形式参数有一个形式参数,用于指明其所能捕获得例外,用于指明其所能捕获得例外类型,运行时系统通过参数值把被抛弃的例外对象传递类型,运行时系统通过参数值把被抛弃的例外对象传递给给catch语句。语句。3.程序设计中要根据具体的情况来选择程序设计中要根据具体的情况来选择catch语句的例外处语句的例外处理类型,一般应该按照理类型,一般应该按照try代码块中例外可能产生的顺序代码块中例外可能产生的顺序及其真正类型进行捕获和处理,及其真正类型进行捕获和处理,尽量避免选择最一般的尽量避免选择最一般的类型作为类型作为catch语
16、句中指定要捕获的类型语句中指定要捕获的类型。4.当然也可以用一个当然也可以用一个catch语句处理多个例外类型,语句处理多个例外类型,这时它这时它的例外类型应该是这多个例外类型的父类的例外类型应该是这多个例外类型的父类,但这种方式,但这种方式使得在程序中不能确切判断例外的具体类型。使得在程序中不能确切判断例外的具体类型。17public class ExceptionDemo public static void main(String args)try FileInputStream fis=new FileInputStream(test1.txt);int b;while(b=fis.r
17、ead()!=-1)System.out.print(b);fis.close();catch(catch(FileNotFoundExceptionFileNotFoundException e)e)catch(catch(IOExceptionIOException e)e)catch(IOException e)catch(FileNotFoundException e)18public class ExceptionDemo public static void main(String args)try FileInputStream fis=new FileInputStream(t
18、est1.txt);int b;while(b=fis.read()!=-1)System.out.print(b);fis.close();catch(Exception e)catch(Exception e)这里可能处理多个异常这里可能处理多个异常19捕获例外捕获例外 finally语句 捕获例外的最后一步是通过捕获例外的最后一步是通过finally语句为例外处理语句为例外处理提供一个统一的出口,使得在控制流程转到程序的其提供一个统一的出口,使得在控制流程转到程序的其他部分以前,能够对程序的状态作统一的管理。他部分以前,能够对程序的状态作统一的管理。无论无论try所指定的程序块中抛弃或不
19、抛弃例外,也所指定的程序块中抛弃或不抛弃例外,也无论无论catch语句的例外类型是否与所抛弃的例外的类型语句的例外类型是否与所抛弃的例外的类型一致,一致,finally所指定的代码都要被执行,它提供了统所指定的代码都要被执行,它提供了统一的出口。一的出口。通常在通常在finally语句中可以进行资源的清除工作,如语句中可以进行资源的清除工作,如关闭打开的文件等。关闭打开的文件等。20try 对文件进行处理的程序对文件进行处理的程序;catch(IOException e)/对文件异常进行处理对文件异常进行处理;finally /不论是否发生异常,都关闭文件不论是否发生异常,都关闭文件;fina
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 精品 java 异常 处理
限制150内