【Java精品源码栏目提醒】:网学会员Java精品源码为您提供【精品】第5章异常处理 - 其它资料参考,解决您在【精品】第5章异常处理 - 其它资料学习中工作中的难题,参考学习。
第5章 异常处理实际运行的软件系统——不仅具有满足用户需求的强大功能,还必须具有高度的可靠性、稳定性和容错性。
Java语言——语法体系是严密的,语法检查是严格的,不仅在编译时能够检查出所有语法错误,而且在运行时能够捕获到所有运行时错误;
Java的异常处理提供对运行时错误的语言级处理机制;
Java的内存自动管理提供内存资源使用的安全性。
1 第5章 异常处理异常处理——捕获和处理运行时错误的一种机制。
异常处理机制使程序具有处理错误的能力,即使发生了运行时错误,应用程序能够捕获异常并及时处理异常,使程序从运行错误中很好地恢复并继续运行,而不会导致程序运行非正常终止。
2 第5章 异常处理5.1 异常处理基础5.2 异常处理措施 3 5.1 异常处理基础5.1.1 异常处理机制的必要性5.1.2 错误和异常 4 5.1.1 异常处理机制的必要性1. 面向过程语言错误处理方式的缺陷面向过程语言——提供的错误处理方式是不完全的,不能保证 及时发现错误并制止错误的蔓延。
例如:C语言在默认情况下是不进行数据范围检查的,面向过程语言—没有提供对运行时错误的防范和处理机制,只 能任凭错误的产生而导致程序运行中断。
例如:输入数据格式错、文件不存在、无法连接数据库、 网络连接中断等。
面向过程语言提供的错误处理方式显然不能满足 面向对象程序设计的要求。
5 5.1.1 异常处理机制的必要性2. 面向对象语言的异常处理思想面向对象程序设计思想——程序的正确性、可靠性和稳定性比 程序效率更重要。
面向对象语言——提供语言级的错误防范和处理机制,即异常 处理机制,它提供全面的、强有力的错误检查与处理方法。
异常处理机制——将运行时错误封装成若干错误类和异常类, 并提供异常处理语句用于在程序中实现对运 行时错误的发现和及时处理,是一种对异常 进行事后处理的机制。
6 5.1.1 异常处理机制的必要性2. 面向对象语言的异常处理思想异常处理机制的优越性体现在以下两方面: 从语法上看,异常处理语句将程序正常代码与错误处理代码 分开,使程序结构清晰,算法重点突出,可读性强。
从运行效果看,异常处理语句使程序具有处理错误的能力。
即使发生了运行错,应用程序能够捕获异常并及时处理异常,使程序从运行错误中很好地恢复并继续运行,而不会导致程序运行非正常终止。
而且,如果当前方法没有能力处理异常,还可以将异常转交给调用者处理。
7 5.1.1 异常处理机制的必要性 3.
Java语言是安全的
Java语言提供严密的语法规则,弥补了C语言的不严密之处。
例如:整数和字符等不同类型的数据不能进行运算等;
Java放弃了C中全程变量、goto语句、宏定义、全局函数以 及结构、联合和指针数据类型,减少了潜在的程序错误。
例如:不能使用指针对指定地址的内存区域进行操作等。
Java在编译和运行时严格检查错误,能够发现所有语法错和 运行错,能够发现C不能发现的错误。
例如:数组下标越界错误等。
8 5.1.1 异常处理机制的必要性3.
Java语言是安全的
Java提供异常处理机制,使程序能够捕获并处理运行错, 从而保证
Java程序运行的可靠性和容错性。
Java提供内存自动管理方式,能够自动跟踪程序使用的所有 内存资源,并且当内存资源不再被使用时能够自动回收,不 需要在程序中写释放内存语句,既减少了程序员的工作量, 又提高了可靠性和安全性。
9 5.1.2 错误和异常1. 错误 error错误—指程序运行时遇到的硬件错误、操作系统的错误、 其他软件错误或操作错误。
错误对于程序而言是致命的,将导致程序无法运行,而且 程序本身不能处理错误,只能依靠外界干预,否则会一直 处于非正常状态。
例如:没有找到.class文件; .class文件中没有main方法等。
10 5.1.2 错误和异常1. 错误 error
Java.lang.Error是错误类,当产生错误时,由
Java虚拟机生 成并抛出Error类对象。
例如:当运行没有main方法的类时,则产生类定义未找到错误 noClassDefFoundError; 当使用new分配内存时,如果没有可用内存,则产生内存 溢出错误 OutOfMemoryError; 11 5.1.2 错误和异常2. 异常exception异常—指在硬件和操作系统正常时,程序遇到的运行错。
例如:整数进行除法运算时除数为0; 操作数超出数据范围; 打开一个文件时发现文件不存在; 网络连接中断等。
异常对于程序而言是非致命的,虽然异常会导致程序非正 常终止,但
Java的异常处理机制使程序自身能够捕获和处 理异常,由异常处理代码调整程序运行方向,使程序仍可 继续运行。
12 5.1.2 错误和异常 2. 异常exception
Java.lang.Exception是异常类,Exception对象是
Java程序捕获 和处理的对象。
每一种异常对应于Exception类的一个子类, 异常对象中包含错误的位置和特征信息。
Java定义的异常类主要分为运行异常和非运行异常。
运行异常—指由程序本身错误引发的异常,这类异常程序设计时 大多可以避免;非运行异常—指由程序运行环境错误引发的异常,这类异常必 须捕获并处理。
注:Exception类和Error类都是Throwable类的子类。
—P130图5.1 13 5.1.2 错误和异常Throwable类的部分声明如下:public class Throwable implements Serializable public Throwable public Throwable String message public String getMessage //获得异常信息 public String toString //获得异常对象的描述信息 public void printStackTrace //显示异常栈跟踪信息public class Exception extends Throwable public Exception public Exception String s 14 5.1.2 错误和异常3. RuntimeException运行异常类运行异常都是RuntimeException 的子类。
1 算术异常ArithmeticException当进行整数除法或取余运算时,如果除数为0,则会产生。
例如: System.out.println“”3/0 //产生算术异常运行时错误信息如下: Exception in thread “main”
java.lang.ArithmeticException:/byzero at Division_by_zero.mainDivision_by_zero.
java:7对于下列浮点除法中除数为0的语义错,
Java在运行时没有发现错误,没有抛出异常,运算结果为无穷大Infinity。
System.out.println“”3/0.0 //运算结果为Infinity 15 5.1.2 错误和异常 3. RuntimeException运行异常类 2 空对象异常NullPointerException当对空数组中元素进行操作,或通过空对象调用方法时,则产生。
例如: int anull a01 //对空数组中的元素进行操作,产生空对象异常 String strnull System.out.printlnstr.length //通过空对象调用方法,产生空对象异常 16 5.1.2 错误和异常 3. RuntimeException运行异常类 3 类型强制转换异常ClassCastException当进行类型强制转换时且遇到不能进行的转换操作时,则产生。
例如: Object objnew Object String strString obj //obj不能转换成String对象,产生类型强制转换异常4 负数组长度异常NegativeArraySizeException当申请数组的存储空间且指定数组长度是负数时,则产生。
例如: int anew int-1; //产生负数组长度异常 17 5.1.2 错误和异常3. RuntimeException运行异常类5 数组下标越界异常ArrayIndexOutOfBoundsException 当通过越界的下标访问数组元素时,则产生。
例如: int a1234 for int i0i