Java之异常处理基础知识

该文中是大段的文字描述,我已经进行了简化,希望这样可以帮助到读者,减少阅读文字那焦躁的心灵。将更多地干货带给你们。

Java中异常处理的目的

在于通过使用少数目前数量的代码来简化大型、可靠的程序的生成,并且通过这种方式可以让你更加自信:你的应用中没有未处理的错误。

对异常处理的实现可以追溯到20世纪60年代的操作系统,甚至于BASIC语言的on error goto语句。而c++的异常处理机制基于Ada,Java中的异常处理则建立在c++的基础之上。

使用异常处理的好处

不必在方法调用处进行检查,因为异常机制将保证能够捕获这个错误。

基本异常

异常情形(exceptional condition):是指阻止当前方法或作用域继续执行的问题。不能继续执行下去,因此从当前环境跳出,把问题提交给上一级环境。

普通问题:在当前环境下能得到足够的信息,总能处理这个错误。

抛出异常后:首先,同Java中其他对象的创建一样,将使用new在堆上创建一场对象。然后,当前的执行路径(它不能继续执行下去)被终止,并且从当前环境中弹出对异常对象的引用。此时,异常处理机制接管程序,并开始寻找一个恰当的地方来继续执行程序。

这个恰当的地方就是异常处理程序,它的任务就是将程序从错误状态恢复,以使程序能要么换一种方式运行,要么继续运行下去。

异常参数

所有的异常类都有两个构造器:一个是默认构造器;另一个是接受字符串作为参数,以便能把相关信息放入异常对象的构造器:

throw new NullPointerException(”t=null”);

捕获异常

监控区域(guarded region):一段可能产生异常的代码,并且后面跟着处理这些异常的代码。

  1. try块

为了防止在方法内部抛出异常,导致方法在抛出异常的过程中结束,我们在方法内设置一个特殊的块来捕获异常。

在这个块中“尝试”各种(可能产生异常的)方法调用,因此称为try块。跟在关键字try后面的普通程序块。

try{

//Code that might generate exceptions

}

     2.异常处理程序

抛出的异常必须在某处得到处理。这个“地点”就是异常处理程序。异常处理程序紧跟在try块之后,以关键字catch表示:

try{
//Code that might generate exceptions
}catch(Type1 id1){
//handle exceptions of Type1
}catch(Type2 id2){
//Handle exceptions of Type2
}
//etc

注意:

在try块的内部,许多不同的方法调用可能会产生类型相同的异常,而你只需要提供一个针对此类型的异常处理程序。

终止与恢复

      异常处理理论上有两种基本模型。

      Java支持终止模型(它是Java和C++所支持的模型)。

在这种模型中,将假设错误非常关键,以至于程序无法返回到异常发生的地方继续执行。一旦异常被抛出,就表明错误已无法挽回,也不能回来继续执行。

      另一种为恢复模型。

意思是异常处理程序的工作是修正错误,然后重新尝试调用出问题的方法,并认为第二次能成功。

      对于恢复模型来说:我们通常希望异常被处理之后能够继续执行程序。如果想要用Java实现类似恢复行为,那么在遇见错误时就不能抛出异常,而是调用方法来修正该错误。或者,把try块放在while循环中,就会不断地进入try块,直到得到满意的结果。

该文章更新到这里就要结束了,希望在大家阅读之后,对大家有了帮助,这样我的内心才是喜悦的,才是对我最大的鼓励!

谢谢大家,我们共同成长!

猜你喜欢

转载自blog.csdn.net/qq_41026809/article/details/91395667
今日推荐