Java语言程序设计讲义第七章.docx

上传人:b****6 文档编号:14229009 上传时间:2023-06-21 格式:DOCX 页数:8 大小:16.69KB
下载 相关 举报
Java语言程序设计讲义第七章.docx_第1页
第1页 / 共8页
Java语言程序设计讲义第七章.docx_第2页
第2页 / 共8页
Java语言程序设计讲义第七章.docx_第3页
第3页 / 共8页
Java语言程序设计讲义第七章.docx_第4页
第4页 / 共8页
Java语言程序设计讲义第七章.docx_第5页
第5页 / 共8页
Java语言程序设计讲义第七章.docx_第6页
第6页 / 共8页
Java语言程序设计讲义第七章.docx_第7页
第7页 / 共8页
Java语言程序设计讲义第七章.docx_第8页
第8页 / 共8页
亲,该文档总共8页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

Java语言程序设计讲义第七章.docx

《Java语言程序设计讲义第七章.docx》由会员分享,可在线阅读,更多相关《Java语言程序设计讲义第七章.docx(8页珍藏版)》请在冰点文库上搜索。

Java语言程序设计讲义第七章.docx

Java语言程序设计讲义第七章

第七章异常处理

主要内容:

异常的相关概念、Java采用什么特殊机制来处理异常,以及Java是如何实现这种机制的。

7.1异常

(1)计算机系统处理异常(错误)的方法主要有:

●系统本身检测、遇到错误时,程序终止运行;

●程序员在程序设计中兼顾、检测、处理异常。

(2)Java语言中产生异常的情况主要有:

●程序中存在非法操作;

●程序员在程序中使用了throw语句引起的异常。

(3)Java语言异常处理机制

将程序运行中的所有错误都看成是一种异常,通过对语句块的检测,一个程序中所有的异常被收集起来,放在程序的某一段中处理。

(4)Java语言采用“Throw-Catch-Try”的方式来处理异常

●throw,即抛出异常,就是指程序检测到一个异常,并且移交给系统的过程;

●catch,即捕获异常,是指系统在收集异常后,根据异常类型,从调用栈查找异常处理指针,并且由此转入相应的异常处理过程;

●try就是指启动异常处理。

(5)Java引发异常的途径。

异常按照如何throw和catch而作如下分类:

●系统引发的异常。

ArrayIndexOutOfBoundsException。

●由Java引发的异常。

如:

OutOfMemoryError。

●由Java方法引发的异常。

如:

FileNotFound和IOException。

(6)Throwable类

●是java.lang包中专门用来处理异常的类。

●它有两个子类:

Error,Exception。

它们分别用来处理两组异常。

●错误类用来处理程序运行环境方面的异常。

如虚拟机错误、连接错误等。

由虚拟机抛出,Java程序不对错误处理。

●异常类处理隐式异常(如除数为0、数组下标越界等错误)和显示异常(文件或类没找到等)。

由Java程序抛出并处理。

●Java语言异常处理类的层次关系:

classjava.lang.Throwable

✧classjava.lang.Error

✓classjava.awt.AWTError

✓classjava.lang.LinkageError

classjava.lang.ClassCircularityError

classjava.lang.ClassFormatError

classjava.lang.IncompatibleClassChangeError

classjava.lang.AbstractMethodError

classjava.lang.IllegalAccessError

……

……

✓classjava.lang.VirtualMachineError

classjava.lang.InternalError

classjava.lang.OutOfMemoryError

✧classjava.lang.Exception

✓classjava.awt.AWTException

✓classjava.lang.ClassNotFoundException

✓classjava.lang.CloneNotSupportedException

✓classjava.io.IOException

classjava.io.EOFException

classjava.io.FileNotFoundException

……

✓classjava.lang.IllegalAcessException

……

✓classjava.lang.RuntimeException

classjava.lang.ArithmeticException

classjava.lang.ArrayStoreException

classjava.lang.ClassCastException

classjava.util.EmptyStackException

classjava.lang.IllegalArgumentException

classjava.lang.IndexOutOfBoundsException

classjava.lang.ArrayIndexOutOfBoundsException

classjava.lang.StringIndexOutOfBoundsException

classjava.lang.NegativeArraySizeException

classjava.util.NoSuchElementException

classjava.lang.NullPointerException

classjava.lang.SecurityException

7.2异常处理

Java语言中,由try-catch-finally语句来实现抛出异常和捕获异常的功能。

格式如下:

try{

//正常语句体

}catch(异常类1,异常对象1){

//异常处理程序体1,处理异常对象1的方法

}catch(异常类2,异常对象2){

//异常处理程序体2,处理异常对象2的方法

}……{

}finally{

//退出程序体

}

(1)抛出和捕获过程

importjava.io.*;

classExceptionDemo2{

publicstaticvoidmain(Stringargs[]){

try{

FileInputStreamfis=newFileInputStream("text");

intb;

while((b=fis.read())!

=-1){

System.out.print(b);

}

fis.close();

}

catch(FileNotFoundExceptione){

System.out.println(e);

System.out.println("message:

"+e.getMessage());

}

catch(IOExceptione){

System.out.println(e);

}

}

}

(2)finally语句

●finally语句为异常处理提供一个统一的出口,使得在控制流转到程序的其它部分以前,能够对程序的状态作统一的管理。

●不论在try代码块中是否发生了异常事件,finally块中的语句都会被执行。

(3)throws语句

●在将异常向上移交给调用该方法的方法处理的情况下,要用throws语句。

即用throws语句指定方法可能抛出的异常。

●throws语句可以抛出多个异常。

●throws语句是和方法的定义结合来声明抛出异常。

格式:

方法声名throwsexceptionList;

例如:

publicintread()throwsIOException{……}

(4)throw语句(throw语句导致抛出一个异常)

●若要显示地抛出异常,可使用throw语句。

其一般语法:

IOExceptione=newIOException();

throwe;

●假设要引发的异常是IOException,附带错误提示信息“I/OerroroccuredinexceptionMethod”,则代码可以是:

thrownewIOException("I/OerroroccuredinexceptionMethod");

●对于非运行时的异常,如IOException等,程序中必须要作出处理,或者捕获,或者声明抛出。

●对于运行时的异常,如ArithmeticException,则可不做处理。

7.3异常处理实例

例1:

importjava.io.*;

importjava.util.*;

publicclassGrades{

publicstaticvoidmain(Stringargv[]){

Gradesgrades=newGrades();

grades.calculateGrades();

}

Vectornames=newVector();

Vectormarks=newVector();

publicvoidcalculateGrades(){

inti;

loadData("indata.txt");

for(i=0;i

System.out.print(names.elementAt(i));

System.out.println("\t"+marks.elementAt(i));

}

}

publicvoidloadData(Stringfilename){

FileReaderinputFile;

Readerreader;

StreamTokenizerst;

StringaString;

intaNumber,next;

try{

inputFile=newFileReader("indata.txt");

reader=newBufferedReader(inputFile);

st=newStreamTokenizer(reader);

System.out.println("--------------------");

while((next=st.nextToken())!

=st.TT_EOF){

switch(next){

casest.TT_NUMBER:

{

aNumber=(int)st.nval;

System.out.println("------------------");

marks.addElement(newInteger(aNumber));

break;

}

default:

{

aString=st.sval;

System.out.println(aString);

names.addElement(aString);

}

}

}

inputFile.close();

}

catch(IOExceptione){

System.out.println("Readingfilehasaproblem");

}

finally{

System.out.println("Thisprogramisover.");

}

}

}

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 其它

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2