首页 > 编程 > Java > 正文

只为基础--java异常处理

2019-11-08 19:53:19
字体:
来源:转载
供稿:网友

声明:

写这片博客主要是为了帮自己加深对java异常处理的理解,文章类型选择了原创,若有雷同,都怪课本吧

Java异常

什么是异常呢?通俗的讲,异常就是程序在运行过程中不期望的行为,比如,函数的参数类型不对、文件找不到、网络连接超时等。

Java所有的异常都有一个共同的祖先--Throwable,下图描述了Java异常类的层次关系。

其中,Throwable有两个子类:Error 和Exception,两者都是Java异常处理的重要子类,各自都包含大量的子类

Error:是程序无法处理的错误,也就是在程序运行期间最严重的问题,程序的功能是不完整的。大多数错误与程序员的执行操作无关,而是代码运行时JVM出现的错误。比如,Java虚拟机运行错误(VirtualMachineError),当JVM的内存资源被占用完时就会抛出OutOfMemoryError,而这样的错误出现时,JVM会选择终止线程。

Exception: 是程序本身可以处理的异常。

Exception类有一个非常重要的子类RunTimeException,RunTimeException及其子类表示“JVM常用操作”引发的错误。比如最常见的除数为0的异常、数组越界的异常以及试图使用空值对象的异常等,分别会引发AttrithmetricException、ArrayIndexOutOfBoundExceptioin和NullPointerException。

对于异常的描述就到这吧,不够用的话,百度一下吧!

Java异常处理机制

在Java应用中,异常处理机制分为:抛出异常,捕捉异常

 

抛出异常:当一个方法出现错误引发异常时,方法创建异常对象并交付运行时系统,异常对象个包含了异常类型和异常出现时的程序状态等异常信息。运行时系统负责寻找处置异常的代码并执行。

 

捕获异常:在方法抛出异常之后,运行时系统将转为寻找合适的异常处理器(exception handler)。潜在的异常处理器是异常发生时依次存留在调用栈中的方法的集合。当异常处理器所能处理的异常类型与方法抛出的异常类型相符时,即为合适的异常处理器。运行时系统从发生异常的方法开始,依次回查调用栈中的方法,直至找到含有合适异常处理器的方法并执行。当运行时系统遍历调用栈而未找到合适的异常处理器,则运行时系统终止。同时,意味着Java程序的终止。

 

对于运行时异常、错误或者可查异常,Java技术所需要的异常处理方式有所不同。

 

由于运行时异常的不可查行,为了更合理、更容易的实现应用程序,Java规定,运行时异常将由Java运行时系统自动抛出,允许应用程序忽略运行时异常。

 

对于方法运行中可能出现的Error,当运行方法不欲捕捉时,Java允许该方法不做任何抛出声明。因为,大多数Error异常属于永远不能被允许发生的状况,也属于合理的应用程序不该捕捉的异常。

 

对于所有的可查异常,Java规定:一个方法不许捕捉,或者声明抛出方法之外。也就是说,当一个方法选择不捕捉可查异常时,它必须声明将异常抛出。

 

能够捕捉异常的方法,需要提供相符类型的异常处理器。所捕捉的异常,可能是由于自身语句所引发并抛出的异常,也可能是由某个调用的方法或者Java运行时系统等抛出的异常。也就是说,一个方法能捕捉的异常,一定是Java代码在某处抛出的异常。简单的理解,异常总是先抛出,后捕捉的。

 

任何Java代码都有可能抛出异常,如:自己编写的代码、来自Java开发环境包中代码,或者Java运行时系统。无论是谁,都可以通过Java的throw语句抛出异常。

 

从方法中抛出的任何异常都必须使用throws子句。

 

捕捉异常通过try…catch语句或者try…catch…finally语句实现

 

总体来说,Java规定,对于可查异常必须捕捉、或者声明抛出。允许忽略不可查的RuntimeException和Error。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表