计算机程序设计

Java的:异常及其处理

任何程序将稳定地操作仅当源代码调试,和没有条件,可能会导致无法预料的情况。 抓住可能出现的故障的过程的编程阶段进行。 要做到这一点,开发商考虑到所有的预期成果,并试图限制误差的影响,使其无法与程序的正常工作,或导致其崩溃。

当您可能需要异常处理

在Java中,异常可以通过不正确的用户输入引起的,没有必要的资源或突然网络断开程序。 对于应用程序开发人员创建舒适的使用,你必须控制的紧急情况的发生。 消费者不应该等待退出应用程序,丢失数据作为未处理的异常,或只是一个消息的一部分出现,说明发生了错误的结果。

处理Java异常

什么考虑? Java语言有它自己的内置的异常处理功能。 当然,误差很大比例是由另一编译阶段抓住了,系统会自动通知使用它不再是可能的。 但这种例外的是在运行时发生。 开发人员应该能够预见到它,并设计代码,以便它并不会导致错误,并处理它以特殊的方式,并移交控制另一个分支。

在Java中,这是由编译器施加捕捉异常,所以典型的问题是已知的,有一个标准的训练模式。

典型的排除

最简单的例子,在其中您可以得到一个异常 - 这个师。 尽管它的简单起见,在术语,作为除法器,可以是零,这将导致一个错误。 那么,如果它是可以预测过去的产生和防止。 但是,此选项并不总是可用的,所以捕捉异常应直接在出现的“被零除”组织。

Java的机制,使拦截处理错误看起来是这样的:

  • 堆异常对象被创建,以及任何其他;
  • 该方案的自然过程被中断;
  • 排除机构正在试图寻找另一种方式继续进行代码;
  • 在处理器方面,工作找到该程序的安全执行或恢复,或将出现实现异常的一种特殊的方式。

创建一个错误可能是这样的最简单的例子:

如果(A == NULL)

抛出新的NullPointerException();

在这里,变量初始化时检查,即 是不是否参照空对象。 如果这种情况出现,需要特殊处理,异常是由抛出新抛出的NullPointerException()。

有关关键字的几个细节

当处理异常,常常需要使用关键字Java来指代特定的操作。 其五所规划的这种语言:

  • 尝试。 这个关键字 已经满足,它意味着一种过渡而进入一段代码,可以抛出异常。 块有限括号{}。
  • 渔获物。 它截取所需异常类型和适当地处理它。
  • 最后。 该关键字是可选的,用于执行特定的代码段,这是无论如何都需要,即使没有异常没有被捕获。 直接try块后添加。
  • 扔 - 让您随时随地创建Java异常。
  • 抛出 - 被放置在所述方法中的签名关键字。 这意味着下面的代码可以抛出这种类型的Java异常。 该标志作为一个信号,需要在必须铭记开发商 - 如预期的他的方法是行不通的。

与一试捕

发布到Java异常,自然假定它会以特殊的方式来处理。 最方便的方式做到这一点,如果代码段是在块围起来。 其中可能包含一个例外。 当你运行该代码时,虚拟机将发现一个意想不到的情况,明白,有一个关键的块,并把控制与处理站。

Java代码被包裹在一个特殊的块的尝试,在其内可以是一个例外。 因此,他把将在同一个地方,不raspolzayas代码被抓到了好几个意外情况。

最典型的代码到处理单元如下:

尝试{

//下面是一些代码,用于生成异常

}赶上(Tip_isklyucheniya_1 identifikator_1){

//在这里有异常处理,根据其类型和条件;

}赶上(Tip_isklyucheniya_2 identifikator_2){

//在这里有异常处理,根据其类型和条件;

}

关键字捕获报告说代码,并对其进行扫描的例外如下面描述的,待处理的,只要它与它的类型相符。 该标识符可以在处理所述码块作为参数来使用。

最后

当它从前面的章节中变得清晰,catch块捕捉异常并进行处理。 但是,很多时候出现这样的情况应该运行一些代码,不管他们是否被抓的错误。 对于这个还有最后的关键字。 它用于增加的各种计数器的值,关闭文件或网络连接。

该地块提出了几个catch块发明的方法捕获异常。 例如,包含在try代码产生意想不到的情况,如冷。 然后,控制台将显示表达式«感冒!»和«那是什么值得庆贺的事情?»。 也就是说,最后块在任何情况下执行。

事实上,这是一种避免引发终于出现。 它与虚拟机的完成连接。 找到如何实现它,就可以在互联网上的开放空间。

throw关键字

投掷生成异常。 它的语法如下:

抛出新NewException();

还有就是创建了一个新的例外类型NewException()。 由于可以使用类型已经包含在标准的Java类库,而原先由自己生产的开发者定义。

这种设计是任意方法的描述中,该呼叫应当然后在try块内发生,以便能够截取它的一部分。

关键字抛出

如果在的情况下该方法可以抛出一个异常,但不能妥善处理发展过程。 为此,在该方法签名指定字抛出和可能的例外的类型。

该标签是一种客户端开发指标的,该方法无法处理他们相同的异常。 此外,如果错误类型检查,则编译器将迫使明确提出要求。

尝试资源

Java版本7的开发已经包括的一大创新,与资源处理try块。

许多对象在Java中创建,使用后应关闭以节约资源。 以前它必须考虑到这一点和手动停止这些实例。 然而,现在,他们似乎AutoClosable接口。 它有助于自动关闭放在try块已使用的对象。 通过这种方法,变得更加方便编写代码,在其可读性显著上升。

自己的类Java异常

所描述的编程语言的创造者考虑到了设计各类突发事件的帐户许多方面。 然而,所有的选项,以防止事件的结果是行不通的,所以在Java中实现自己定义异常的能力,这是适合于特定代码的需求。

最简单的方法来创建 - 从最合适的继承对象上下文。

正巧有从Exception继承,用来定义自己的异常类。 在MyException有两个构造 - 默认情况下,第二个 - 的说法味精String类型。

然后,在公共教室FullConstructors实施方法F,其中包含签名抛出MyException。 这个关键字意味着F可抛出像Java MyException异常。 此外,在该方法中体内产生的文本输出到控制台本身和实际产生MyException,通过掷信息。

第二种方法是从第一个,当你创建一个例外,它传递一个字符串参数,这将在捕捉反映在控制台略有不同。 在主很显然,F()和g()被放置在一个尝试检查和关键字捕捉配置成捕获MyException。 处理的结果是显示一个错误消息到控制台:

因此它来添加Java异常,通过自己的手。

结构异常

正如在Java中的所有对象,异常也继承和具有层次结构。 在这种编程语言抛出的所有错误的根元素是类java.lang.Throwable。 从他2种继承 - 错误和异常。

错误 - 信号的严重错误,未被选中Java异常。 拦截和处理这些数据在大多数情况下会发生在设计阶段,而不是在需要在最终的应用程序代码引入。

最常用的创建和分析的异常类是例外。 这反过来,又分为几个分支,包括RuntimeException的。 通过RuntimeException的是运行时异常,也就是在节目中出现。 从它衍生的所有类都无法证实。

经常有例外

在Java中的异常,其名单如下呈现,是最常用,所以你应该详细描述它们:

  • ArithmeticException。 这些措施包括与算术运算相关的错误。 最明显的例子 - 除以零。
  • ArrayIndexOutOfBoundsException异常 - 上诉到超过总长度的数组编号。
  • ArrayStoreException信息 - 尝试分配阵列的不相容元素类型。
  • ClassCastException异常 - 企图把错误的一种类型到另一个。
  • 抛出:IllegalArgumentException - 使用方法调用错误的说法。
  • NegativeArraySizeException - 当你创建大小为负的数组例外。
  • NullPointerException异常 - 引用的误用为null。
  • NumberFormatException - 如果发生在一个错误的字符串转换为整数。
  • UnsupportedOperationException异常 - 不支持操作。

这些例子代表各类型未检查Java异常。 但这么看检查:

  • ClassNotFoundException的 - 类未找到。
  • IllegalAcccessException - 限制访问类。
  • InterruptedException的 - 流的中断。
  • NoSuchFieldException - 没有必填字段。

例外的解释

经常遇到异常说到应当指出的是它们在设计诠释,可以正确感知。 接下来是一个简短的清单中更详细,其中可能有意想不到的情况说明。

NullPointerException异常。 当出现异常时,很第一种情况是吸引的引用的对象,则等于空。 它还延伸到零类实例的方法。 的NullPointerException可以以获得相等的长度空阵列的情况下被抛出。 为了避免这种情况将定期检查的空点。

ArrayIndexOutOfBoundsException异常。 任何程序无法在不使用阵列的存在。 因此,频繁求助于它可以产生和错误。 当开发者试图访问不在索引列表的数组元素出现异常。 例如,所请求的值是高于或低于零长度。 很经常的是,该阵列中的开始零分的事实的结果。

发现

处理Java异常 - 一个强大的工具环境,极大地方便了程序员的工作,让他创造一个干净,没有代码错误。 关于如何顺利和稳定运行应用程序依赖于开发人员的地位和声誉。

当然,在或多或少的简单的程序来跟踪异常情况要容易得多。 但在几十万行大型自动化复合物有可能只作为长期测试和调试的结果。

对于从出现在某些应用程序的Java异常错误,有些公司提供的奖励,当他们发现爱好者。 尤其是那些导致违反安全策略的软件的赞赏。

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 zhcn.delachieve.com. Theme powered by WordPress.