您好,欢迎来到99网。
搜索
您的当前位置:首页Java语言程序设计讲义-第七章

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

来源:99网
Java语言程序设计讲义-第七章.txt成熟不是心变老,而是眼泪在眼里打转却还保持微笑。把一切平凡的事做好既不平凡,把一切简单的事做对既不简单。 本文由a19870209a贡献 doc文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。 第七章 异常处理 主要内容: 主要内容:异常的相关概念、Java 采用 什么特殊机制来处理异常,以及 Java 是如何实现这种机制的。

7.1 异常 (1)计算机系统处理异常(错误)的方法 主要有: 系统本身检测、遇到错误时,程序 终止运行; 程序员在程序设计中兼顾、检测、 处理异常。 (2)Java 语言中产生异常的情况主要 1

有: 程序中存在非法操作; 程序员在程序中使用了 throw 语句 引起的异常。

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

(4) Java 语言采用 “Throw-Catch-Try” 的方式来处理异常 throw,即抛出异常,就是指程序检 2

测到一个异常,并且移交给系统的过 程; catch,即捕获异常,是指系统在收 集异常后,根据异常类型,从调用栈 查找异常处理指针,并且由此转入相 应的异常处理过程; try 就是指启动异常处理。

(5) Java 引发异常的途径。 异常按照如 何 throw 和 catch 而作如下分类: 系统引发的异常。 ArrayIndexOutOfBoundsException 。 由 Java 引发的异常。如: 3

OutOfMemoryError。 由 Java 方法引发的异常。 如:FileNotFound 和 IOException。 (6)Throwable 类 是 java.lang 包中专门用来处理异 常的类。 它有两个子类:Error,Exception。 它们分别用来处理两组异常。 错误类用来处理程序运行环境方面 的异常。 如虚拟机错误、 连接错误等。 由虚拟机抛出, Java 程序不对错误处 理。 异常类处理隐式异常(如除数为 0、 4

数组下标越界等错误)和显示异常 (文件或类没找到等) 由 Java 程序 。 抛出并处理。 Java 语言异常处理类的层次关系: class java.lang.Throwable

class java.lang.Error class class java.lang.LinkageError class java.lang.ClassCircularityError class java.lang.ClassFormatError class 5

java.awt.AWTError

java.lang.IncompatibleClassChangeE rror class java.lang.AbstractMethodError class java.lang.IllegalAccessError „„ „„ class java.lang.VirtualMachineError class java.lang.InternalError class java.lang.OutOfMemoryError class java.lang.Exception 6

class java.awt.AWTException class java.lang.ClassNotFoundException class java.lang.CloneNotSupportedExc eption class java.io.IOException class java.io.EOFException class java.io.FileNotFoundException „„ 7

class java.lang.IllegalAcessExceptio n „„ class java.lang.RuntimeException class java.lang.ArithmeticException class java.lang.ArrayStoreException class

java.lang.ClassCastException class java.util.EmptyStackException 8 class java.lang.IllegalArgumentException class java.lang.IndexOutOfBoundsExceptio n class java.lang.ArrayIndexOutO fBoundsException class java.lang.StringIndexOut OfBoundsException class java.lang.NegativeArraySizeExcepti on 9

class java.util.NoSuchElementException class java.lang.NullPointerException class java.lang.SecurityException 7.2 异常处理 Java 语言中,由 try-catch-finally 语 句来实现抛出异常和捕获异常的功能。 格式如下: try{ //正常语句体 }catch (异常类 1,异常对象 1){ //异常处理程序体 1,处理异常对象 10

1 的方法 }catch (异常类 2,异常对象 2){ //异常处理程序体 2,处理异常对象 2 的方法 }„„{ }finally{ //退出程序体 }

(1)抛出和捕获过程 import java.io.*; class ExceptionDemo2 { public static void main(String 11

args[]) try { {

FileInputStream fis = new FileInputStream(\"text\"); int b; while { System.out.print(b); } fis.close(); } catch(FileNotFoundException e) { System.out.println(e); System.out.println(\"message: 12

((b=fis.read())!=-1)

\"+e.getMessage()); } catch (IOException e) { System.out.println(e); } } } (2)finally 语句 finally 语句为异常处理提供一个统 一的出口,使得在控制流转到程序的 其它部分以前,能够对程序的状态作 统一的管理。 不论在 try 代码块中是否发生了异常 事件,finally 块中的语句都会被执 13 行。 (3)throws 语句 在将异常向上移交给调用该方法的方 法处理的情况下,要用 throws 语句。 即用 throws 语句指定方法可能抛出的 异常。 throws 语句可以抛出多个异常。 throws 语句是和方法的定义结合来声 明抛出异常。格式: 方法声名 throws exceptionList; 例如:public int read() throws IOException {„„ „„} „„ 14 (4) throw 语句(throw 语句导致抛出一 个异常) 若要显示地抛出异常,可使用 throw 语句。其一般语法: IOException e=new IOException(); throw e; 假设要引发的异常是 IOException, 附 带错误提示信息“I/O error occured in exceptionMethod”, 则代码可以是: throw new IOException (\"I/O error occured in exceptionMethod\"); 对于非运行时的异常, IOException 如 等,程序中必须要作出处理,或者捕 15

获,或者声明抛出。 对于运行时的异常,如 ArithmeticException,则可不做处 理。 7.3 异常处理实例

例 1: import import java.io.*; java.util.*;

public class Grades{ public static void main(String argv[]) { Grades grades = new Grades(); grades.calculateGrades(); 16 }

Vector names = new Vector(); Vector marks = new Vector(); public void calculateGrades() int i; {

loadData(\"indata.txt\"); for (i=0; ientAt(i)); } }

public void loadData(String filename) {

FileReader inputFile; Reader reader; StreamTokenizer st; String aString; int aNumber, next; try {

inputFile=new FileReader(\"indata.txt\"); reader=new 18

BufferedReader(inputFile); st=new StreamTokenizer(reader);

System.out.println(\"\"); while((next = st.nextToken()) != st.TT_EOF) switch (next) { { {

case st.TT_NUMBER: aNumber=(int)st.nval;

System.out.println(\"\"); marks.addElement(new 19

Integer(aNumber)); break; } default: { aString = st.sval;

System.out.println(aString);

names.addElement(aString); } } } inputFile.close(); } catch(IOException e) 20 {

System.out.println(\"Reading file has a problem\"); } finally { System.out.println(\"This program is over. \"); } } } 21 1

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 99spj.com 版权所有 湘ICP备2022005869号-5

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务