博客 爪哇 爪哇 中的异常处理

爪哇 中的异常处理

OCPJP考试的另一个目标是“例外”,处理它们,宣布它们。在这篇文章中,我们将处理“异常”,尤其是“处理异常”。

根据Oracle网站,“异常是一个事件,它在程序执行期间发生,破坏了程序的正常流程’的指示。” (Java教程)当正常流程中断并引发异常时,将通过“ try-catch”块来处理该异常。

异常类型:
异常分为三种:检查异常,错误和运行时异常。这是异常的层次结构:

异常处理1

 

检查的异常:
除了“ java.lang.Error”和“ java.lang.RuntimeException”及其子类下的所有异常外,所有异常均为“检查的异常”。受检查的异常的一个常见示例是,当用户尝试打开不存在的文件时-引发异常。受检查的异常的其他示例是硬件问题和常见错误。程序员应适当地处理这些异常。

错误:
错误是 未经检查的异常。 错误是通常不希望编译器从中恢复的条件。这些情况发生在应用程序外部。因此,“ try-catch”结构不会捕获错误。线程死亡,IO错误是“错误”的一些示例。

RuntimeException:
运行时异常再次出现 未经检查的异常。 它们与错误类似,因为不应从运行时异常中恢复应用程序。唯一的区别是运行时异常在应用程序内发生。运行时异常的一些示例包括“ ArithmeticException”,“ NullPointerException”等。“ java.lang.RuntimeException”的所有子类都属于此类。处理未经检查的异常并没有错-但是编译器并不希望这样。

处理异常:
看到了不同类型的异常之后,我们现在了解如何处理异常。所有异常均通过“ try-catch”块进行处理。下面的列表说明了“ try-catch”块的语法。

尝试{
//1. some code here that might raise an exception
}

2. catch(specificException e){
//在此处执行适当的操作
}
catch(GeneralException e){
//在此处执行适当的操作
}
最后{
//清理代码在这里
}

如果第1行“ try”块中的代码产生“ specificException”,则它将传播到第2行。该异常将在“ catch”块中处理,然后控件将移至“ finally”块。清除代码在“ finally”块中执行,并且控制移出“ try-catch”结构。
即使第一行没有例外,控制权也将首先移至“ finally”块,然后离开“ try-catch”结构。

以下是有关“最终”区块的一些关键点:

  1. “最终”封锁 几乎 always runs.
    如果引发异常,它将运行。如果有例外 抛出,它运行。如果捕获到异常,它将运行。如果未捕获到异常,它将运行! (凯西·塞拉)
  2. “最终”条款是 需要。

接下来,我们将看到必须说明特定例外和一般例外。
现在考虑以下代码:

异常处理2

在这里,由于我们尝试访问数组的第四个元素,因此引发了“ ArrayIndexOutOfBoundsException”。请注意,“ ArrayIndexOutOfBoundsException”是在“ IndexOutOfBoundsException”之前声明的。  换句话说,在一般例外之前声明了特定例外。

如果修改了代码并将“ IndexOutOfBoundsException”放置在“ ArrayIndexOutOfBoundsException”之前,则将导致编译器错误。

异常处理3

 

在本文中,我们讨论了不同类型的异常以及处理异常的方法。我们将在下一篇文章中继续讨论异常。

参考书目
爪哇 教程. (n.d.). Retrieved Nov 26, 2014, from Oracle Java Documentation: http://docs.oracle.com/javase/tutorial/essential/exceptions/definition.html
Sun Java 6认证程序员学习指南。在B. B. Kathy Sierra中。

准备OCPJP 7认证?通过第一次尝试 Whizlabs OCPJP 7实践测试!  从免费试用开始!

关于阿米特·维玛(Amit Verma)

阿米特(Amit)是一位热情的技术作家。他总是以他的创新思维和实践方法来激励技术人员。毫无疑问,主要的问题解决者是每个技术问题的追求者!
传播爱心

发表评论

请输入您的评论!
请在这里输入您的名字