Java未被捕获的异常

作者: 433c801e5456 | 来源:发表于2019-06-05 09:29 被阅读3次

在你学习在程序中处理异常之前,看一看如果你不处理它们会有什么情况发生是很有好处的。下面的小程序包括一个故意导致被零除错误的表达式。


image.png

当Java运行时系统检查到被零除的情况,它构造一个新的异常对象然后抛出该异常。这导致Exc0的执行停止,因为一旦一个异常被抛出,它必须被一个异常处理程序捕获并且被立即处理。该例中,我们没有提供任何我们自己的异常处理程序,所以异常被Java运行时系统的默认处理程序捕获。任何不是被你程序捕获的异常最终都会被该默认处理程序处理。默认处理程序显示一个描述异常的字符串,打印异常发生处的堆栈轨迹并且终止程序。

下面是由标准javaJDK运行时解释器执行该程序所产生的输出:
java.lang.ArithmeticException: / by zero
at Exc0.main(Exc0.java:4)
注意,类名Exc0,方法名main,文件名Exc0.java和行数4是怎样被包括在一个简单的堆栈使用轨迹中的。还有,注意抛出的异常类型是Exception的一个名为ArithmeticException的子类,该子类更明确的描述了何种类型的错误方法。本章后面部分将讨论,Java提供多个内置的与可能产生的不同种类运行时错误相匹配的异常类型。

堆栈轨迹将显示导致错误产生的方法调用序列。例如,下面是前面程序的另一个版本,它介绍了相同的错误,但是错误是在main( )方法之外的另一个方法中产生的:

class Exc1 {
    static void subroutine() {
        int d = 0;
        int a = 10 / d;
    }
    public static void main(String args[]) {
        Exc1.subroutine();
    }
}

默认异常处理器的堆栈轨迹结果表明了整个调用栈是怎样显示的:

   java.lang.ArithmeticException: / by zero
    at Exc1.subroutine(Exc1.java:4)
    at Exc1.main(Exc1.java:7)

如你所见,栈底是main的第7行,该行调用了subroutine( )方法。该方法在第4行导致了异常。调用堆栈对于调试来说是很重要的,因为它查明了导致错误的精确的步骤。

如果你现在也在学习java,在入门学习java的过程当中缺乏系统的学习教程,或者说缺乏一个交流技术的地方,你可以申请加入我的Java学习交流qun:六四一,一二一,九四八。里面还有我这几年整理的java学习手册,面试题,开发工具,PDF文档教程,你可以自行去下载。

相关文章

  • Java未被捕获的异常

    在你学习在程序中处理异常之前,看一看如果你不处理它们会有什么情况发生是很有好处的。下面的小程序包括一个故意导致被零...

  • 6未捕获的异常

    如果一个异常未被捕获,则由名为未捕获异常处理程序的函数截取。未捕获的异常处理程序总是导致程序退出,但可能会在这之前...

  • springboot事务回滚

    默认spring事务只在发生未被捕获的 runtimeExcetpion时才回滚。 spring aop异常捕获...

  • 廖雪峰Java 读书笔记 (二) 异常处理

    1. Java的异常 Java使用异常来表示错误,并通过try ... catch捕获异常; Java的异常是cl...

  • Promise未被捕获的异常

    在你不知道的JS一书中,我们了解到,Promise的状态具有单决议的特性。假如在同一个promise阶段里,res...

  • Dart语言 4 异常和类

    异常 Dart代码可以抛出并捕获异常。如果未捕获异常,则会引发程序终止 与Java相比,Dart的所有异常都是未经...

  • Dart之旅06: 异常

    你的dart代码可以抛出和捕获异常。异常指一些出乎意料的事情发生了。通常如果一个异常未被捕获时回终止程序或者当前的...

  • Java异常捕获

    异常Exception异常:就是Java程序在运行过程中出现的错误。前面接触过的空指针,数组越界,类型转换错误异常...

  • Java 异常处理

    原文链接 Java 异常处理 你将学到 Java中异常的捕获方法 throws/throw 和 finally 关...

  • java学习:Java 异常处理,值得一看(二)

    上篇讲了java的 异常处理: 捕获异常 多重捕获块 throws/throw 关键字 现继续前缘,让我们共同了解...

网友评论

    本文标题:Java未被捕获的异常

    本文链接:https://www.haomeiwen.com/subject/lfcjxctx.html