java异常处理代码是什么?java异常类型有哪些?

阳光 2022-01-13 18:37:57 java常见问答 4102

我们在运行程序的时候,有时候会发生一些不愉快的事情,阻止了程序按照程序员的预期正常执行,其实这就是异常,当异常出现的时候,我们就要就是去解决,那java异常处理代码是什么?下面来我们就来给大家讲解一下。

在编写代码处理异常时,对于检查异常,有2种不同的处理方式:使用try...catch...finally语句块处理它。或者,在函数签名中使用throws 声明交给函数调用者caller去解决。

try...catch...finally语句块

try
{
    //try块中放可能发生异常的代码。
    //如果执行完try且不发生异常,则接着去执行finally块和finally后面的代码(如果有的话)。
    //如果发生异常,则尝试去匹配catch块。
}
catch (SQLException SQLexception)
{
    //每一个catch块用于捕获并处理一个特定的异常,或者这异常类型的子类。Java7中可以将多个异常声明在一个catch中。
    //catch后面的括号定义了异常类型和异常参数。如果异常与之匹配且是最先匹配到的,则虚拟机将使用这个catch块来处理异常。
    //在catch块中可以使用这个块的异常参数来获取异常的相关信息。异常参数是这个catch块中的局部变量,其它块不能访问。
    //如果当前try块中发生的异常在后续的所有catch中都没捕获到,则先去执行finally,然后到这个函数的外部caller中去匹配异常处理器。
    //如果try中没有发生异常,则所有的catch块将被忽略。
}
catch (Exception exception)
{
    //...
}
finally
{
    //finally块通常是可选的。
    //无论异常是否发生,异常是否匹配被处理,finally都会执行。
    //一个try至少要有一个catch块,否则, 至少要有1个finally块。但是finally不是用来处理异常的,finally不会捕获异常。
    //finally主要做一些清理工作,如流的关闭,数据库连接的关闭等。
}

需要注意的地方:

1、try块中的局部变量和catch块中的局部变量(包括异常变量),以及finally中的局部变量,他们之间不可共享使用。

2、每一个catch块用于处理一个异常。异常匹配是按照catch块的顺序从上往下寻找的,只有第一个匹配的catch会得到执行。匹配时,不仅运行精确匹配,也支持父类匹配,因此,如果同一个try块下的多个catch异常类型有父子关系,应该将子类异常放在前面,父类异常放在后面,这样保证每个catch块都有存在的意义。

java异常类型有哪些?

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

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

对于运行时异常、错误或可查异常,Java技术所要求的异常处理方式有所不同。由于运行时异常的不可查性,为了更合理、更容易地实现应用程序,Java规定,运行时异常将由Java运行时系统自动抛出,允许应用程序忽略运行时异常。

其实出现java异常也不是一件坏事,能够帮助提高程序的可读性,简化程序的结构,所以进行异常处理是非常关键和重要的一部分。最后大家如果想要了解更多java常见问答知识,敬请关注奇Q工具网。

推荐阅读:

json对象和json字符串的区别是什么?两者如何转换?

qt使用的什么设计模式?qt设计模式之单例模式

hibernate是orm框架吗?hibernate开发环境是怎样的?