Java 面向对象 异常篇章
Posted 果子儿酱
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 面向对象 异常篇章相关的知识,希望对你有一定的参考价值。
1. 异常
对于计算机程序而言,开发人员无法保证编写的程序永远不会出现错误,无法保证用户总是按照程序的意愿输入数据,无法保证操作系统永远稳定且Windows操作系统不会出现蓝屏的情况。在程序开发过程中,经常会遇到在编译时没有任何报错信息,但在程序运行时产生错误的情况。这种错误对Java而言就是一种异常。
当今社会,越来越多的人们选择开车上班,人们都希望能够准时到达公司,但有时会遇到车多、人多或天气不好出现塞车的情况,有时甚至会发生交通事故,这些都是生活中的异常。而这些异常如果不及时处理,就会造成迟到、旷工或更严重的后果。生活中的异常,如图5.1所示。
2. 异常的分类
Java中的异常按照类的层次结构进行组织,Java 专门设计一个Exception类来代表异吊,Exception类继承自 Throwable, Exception 类的子类分别表示不同类型的异常。Java异常体系结构
Throwable类位于异常类层次结构的顶端,它是Java中所有错误和异常的父类。Error 类代表Java中的错误,Exception代表Java中的异常。
2.1. Error错误
通常指与虚拟机相关的问题,如系统崩溃、虚拟机错误、动态链接失败等,这种错误无法恢复或不可能捕获,将导致应用程序中断。通常程序无法处理这些错误。例如,现实施工中因地震而导致楼房坍塌,即类似于程序中发生了一个Error类型的异常。
2.2. Exception异常
该类型的异常在程序中发生后可以进行捕获处理,处理后程序正常运行,从而保证程序的稳定性及健壮性。Java程序开发中的异常处理,主要是针对Exception类及其子类进行的。
数组下标越界异常,详见示例5.2。
3. Exception异常
该类型的异常在程序中发生后可以进行捕获处理,处理后程序正常运行,从而保证程序程序开发中的异常处理,主要是针对Exception类及其子类进行的。
数组下标越界异常,详见示例。
public class RunException {
public static void showRuntimeException(){
int[] data=new int[2];
System.out. printIn(data[21);将产 生数组下标越界的异常
public static void main(String[] args) {
RunException. showRuntimeException();
}
4.try-catch 处理异常
Java的异常处理机制可以保障程序具有良好的容错性,使程序健壮性更高。当程序运行出现意外情形时,系统云 自动生成一-个 Exception类型的子类对象来通知程序,从而实现业务功能的代码与错误处理代码分离,使程序具有更好的可读性。
Java的异常处理机制提供了两种方式来处理异常: -种是使用"try-catch" 语句处理异常,另种是在方法声明时使用throws关键字将异常抛出。
4.1 使用try-catch捕获异常
Java将可能出现的异常语句编写在try语句块中,所有的异常处理则放在catch语句中进行处理,其语法如下:
try{
//可能出现异常的语句
}catch(异常类型1异常对象1){//对异常的处理
5. throws与throw
使用throws声明抛出异常
当前方法不知道如何处理当前异常时,可以使用throws关键字声明抛出异常,该异常可由上一级调用者处理,throws声明只能在方法签名中使用,throws可以声明抛出多个异常类,多个异常类之间以逗号隔开。
throws声明抛出的语法如下:
(访问控制符]返回类型方法名称(参数列表) throws异常类1,异常类2--8
说明
是在main(方法中继珠续将异常抛出,
如果在main0方法中未使用try-catch捕获readFileO方法抛出的异常,而定任继续向上抛给JVM,让其对此时该异常交给JVM虚拟机进行处理。但不提倡开发人员在main0方法中将并常
异常进行处理。
6. throw 抛出异常
在实际的企业项目开发中,系统是否要抛出异常,可能需要根据应用的业务需求来决定,如果程序中的数据处理与指定的业务需求不符,这就是一种异常。与业务需求不符而产生的异常,必须由开发人员来决定抛出,系统无法抛出这种异常。
如果需要在程序中自行抛出异常,则应该使用throw语句。throw语句抛出的不是一个异常类, 而是一个异常实例,且每次只能抛出一个异常实例。
throw语句的语法格式如下:
圆语法throw异常类对象;
以上是关于Java 面向对象 异常篇章的主要内容,如果未能解决你的问题,请参考以下文章