第6章异常(Exception)处理
教学目的要求
,理解Java 中抛弃异常和声明抛弃异常的区别与联系;
,学会如何合理应用异常处理机制;
。
异常的概念
异常处理
自定义异常处理类
应用举例
本章内容
1、异常的概念
在进行程序设计时,错误的产生是不可避免的,如何处理错误?把错误交给谁去处理?程序又该如何从错误中恢复?这是任何程序设计语言都要解决的问题。
所谓错误,是在程序运行过程中发生的异常事件,比如除0溢出、数组越界、文件找不到等,这些事件的发生将阻止程序的正常运行。为了加强程序的鲁棒性(强壮性,robust),程序设计时,必须考虑到可能发生的异常事件并做出相应的处理。
异常的概念
在C语言中,通过使用if语句来判断是否出现了错误,同时,调用函数通过被调用函数的返回值感知在被调用函数中产生的错误事件并进行处理。
但是,这种错误处理机制会导致不少问题,因为在很多情况下需要知道错误产生的内部细节。
通常,用全局变量Errno来存储一个异常事件的类型,这容易导致误用,因为一个Errno的值有可能在被处理前被另外的错误覆盖掉。此外,即使最优美的C语言程序,为了处理异常情况,也常常求助于goto语句。
没有错误处理的程序:
{
openTheFile;
determine its size;
allocate that much memory;
read-file
closeTheFile;
}
异常的概念
异常的概念
以常规方法处理错误:
openFiles;
if (theFilesOpen)
{
determine the length of the file;
if (gotTheFileLength)
{
allocate that much memory;
if (gotEnoughMemory)
{
read the file into memory;
if (readFailed) errorCode=-1;
else errorCode = -2;
}
else errorCode=-3;
}
else errorCode=-4 ;
}
else errorCode=-5;
以常规方法处理错误存在的问题:
观察前面的程序,大家会发现大部分精力花在出错处理上了
只把能够想到的错误考虑到,对以外的情况无法处理
程序可读性差,大量的错误处理代码混杂在程序中
出错返回信息量太少,无法更确切的了解错误状况或原因
异常的概念
异常的概念
Java通过面向对象的方法来处理程序错误,在Java中,错误被称为异常(Exception)。
在一个方法的运行过程中,如果发生了异常,则这个方法(或者是Java虚拟机)生成一个代表该异常的对象(包含了该异常的详细信息),并把它交给运行时系统,运行时系统寻找相应的代码来处理这一异常。我们把生成异常对象并把它提交给运行时系统的过程称为抛弃(throw)一个异常。
运行时系统在方法的调用栈中查找,从生成异常的方法开始进行回朔,直到找到包含相应异常处理的方法为止,这一个过程称为捕获(catch)一个异常。
异常的概念
用异常的形式处理错误:
{
try
{
openTheFile;
determine its size;
allocate that much memory;
read-File;
closeTheFile;
}
catch(fileopenFailed) { dosomething; }
catch(sizeDetermineFailed) { dosomething; }
catch(memoryAllocateFailed) { dosomething; }
catch(readFailed) { dosomething; }
catch(fileCloseFailed) { dosomething; }
finally { dosomething; }
}
Java教材课件06 来自淘豆网m.daumloan.com转载请标明出处.