OCPJP考试的另一个目标是“例外”,处理它们,宣布它们。在这篇文章中,我们将处理“异常”,尤其是“处理异常”。
根据Oracle网站,“异常是一个事件,它在程序执行期间发生,破坏了程序的正常流程’的指示。” (Java教程)当正常流程中断并引发异常时,将通过“ try-catch”块来处理该异常。
异常类型:
异常分为三种:检查异常,错误和运行时异常。这是异常的层次结构:
检查的异常:
除了“ 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”结构。
以下是有关“最终”区块的一些关键点:
- “最终”封锁 几乎 always runs.
如果引发异常,它将运行。如果有例外 不 抛出,它运行。如果捕获到异常,它将运行。如果未捕获到异常,它将运行! (凯西·塞拉) - “最终”条款是 不 需要。
接下来,我们将看到必须说明特定例外和一般例外。
现在考虑以下代码:
在这里,由于我们尝试访问数组的第四个元素,因此引发了“ ArrayIndexOutOfBoundsException”。请注意,“ ArrayIndexOutOfBoundsException”是在“ IndexOutOfBoundsException”之前声明的。 换句话说,在一般例外之前声明了特定例外。
如果修改了代码并将“ IndexOutOfBoundsException”放置在“ ArrayIndexOutOfBoundsException”之前,则将导致编译器错误。
在本文中,我们讨论了不同类型的异常以及处理异常的方法。我们将在下一篇文章中继续讨论异常。
参考书目 爪哇 教程. (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实践测试! 从免费试用开始!
- Splunk Core认证用户考试的准备指南 -2020年12月16日
- 2020年25个Tableau面试问题 -2020年10月15日
- 初学者学习Java的最佳方法 -2020年10月8日
- 您需要学习的20个PostgreSQL命令 -2020年9月8日
- 甲骨文宣布新的Java OCP 11开发人员1Z0-819考试 -2020年8月31日