Java的异常处理

 一、引言

  软件系统应该为用户提供一套完善的服务,系统不仅要满足用户需求的功能,还需要具有可靠性、稳定性和容错性。要求软件系统不仅自身不能有错误,还要具备较强的抗干扰能力:在用户操作出现错误是,或遇到不可抗拒的干扰是,软件系统也不能放弃,而必须景最大努力排除错误继续运行。只有具备这样能力的软件系统才会具有更好的应用空间。Java语言的异常处理机制能够很好地解决以上问题。

 二、错误与异常

  1. 错误

  错误(error)是指程序遇到非常严重的不正常状态,不能简单地恢复执行,一般是在运行时遇到的硬件或OS的错误,如内存溢出、操作系统出错、虚拟机出错等。错误对于程序而言是致命的,将导致程序无法运行,而且程序本身不能处理它,而只能依靠外界干预,否则会一直处于非正常状态。例如,没有找到.class文件,或.class文件中没有main()方法等,将导致应用程序不能运行。

  2. 异常

  异常(exception)指非致命性错误,一般指在运行程序时硬件和OS是正常的,而程序遇到了运行错,如整数进行除法运算时除数为0,操作数超出数据范围,要打开一个文件时发现文件不存在,网络连接中断等。

  异常会导致原有程序非正常中止,但Java语言提供的异常处理机制使应用程序自身能够捕获异常,并且能够处理异常,由异常处理部分调整应用程序运行状态,使应用程序仍可继续运行。

  在编译和运行应用程序时,发现Java应用程序中的错误和异常并进行处理的流程图如图所示。

                   

 三、错误和异常的分类

  Java类库提供了许多处理错误和异常的类,主要分为两大部分:Error类和Exception类。

  Error类是错误类,该类由Java虚拟机生成并抛给系统,如内存溢出错误、栈溢出错误、动态链接错误等。当运行某一个类是如果没有main()方法,则产生错误NoClassDetFoundError;当使用new分配内存空间时,如果没有可用内存,则产生内存溢出错误OutOtMemoryError。

  Exception类是异常类,是Java应用程序捕获和处理的对象。每一种异常对应于Exception类的一个子类,异常对象中包含的错误的位置和特征信息。

  下面是一个异常程序的示例:

 1 /**
 2  * 除数为0的异常
 3  */
 4 public class ExceptionByZero{
 5 
 6     public static void main(String[] args) {
 7         int x = 6;
 8         int y = 0;
 9         System.out.println("x="+x);
10         System.out.println("y="+y);
11         System.out.println("x/y="+x/y);
12     }
13 
14 }

  编译,运行结果如图所示:

  

 

猜你喜欢

转载自www.cnblogs.com/ymyBlogs/p/8910027.html