JAVA不经过Catch(Exception e)直接到finally或者退出原因

  今天遇到一个很奇葩的问题!在写Hadoop程序的时候!new一个对象!程序直接跑到finally代码块里面去了!Catch里面的Exception也没有执行。

Configuration configuration = new Configuration();

  害我纳闷了好久!就去看了Hadoop的源码!new这个对象的时候也没执行哪些操作,只是一些正常的赋值而已!后来网上找了很久才发现,原来是被变成Throwable抛出来了!而Exception是Throwable的子类,所以无法捕捉到,只有捕捉Throwable的时候,才可以将错误信息打印!

  具体原始是由于Hadoop的Configuration类中有个静态的变量,在ClassLoader加载class的时候,发生了异常

private static final Log LOG =
    LogFactory.getLog(Configuration.class);

  我的错误很弱智,只是因为没有把 common-logging的包加进去而已! 相信一般情况这种事情很少人会遇到!但今天遇到了,就当是经验教训,也好让有这方面的疑问的人可以得到解决!所以呢,以后不要以为Catch(Exception e)就算是万事大吉了,throwable才是终极BOSS!

  至于为什么这里抛出的是Throwable而不是Exception?我一直找都没找到原因! 希望哪位大牛能够告知一下!小弟在此谢过了!

  

时间: 2024-10-11 05:45:56

JAVA不经过Catch(Exception e)直接到finally或者退出原因的相关文章

Java基础 try...catch...catch 使用众多异常的父类 Exception,去捕 获 其所有子类异常

????JDK :OpenJDK-11 ?????OS :CentOS 7.6.1810 ?????IDE :Eclipse 2019?03 typesetting :Markdown ? code package per.jizuiku.base; /** * @author 给最苦 * @date 2019/06/29 * @blog www.cnblogs.com/jizuiku */ class Demo { /** * @param args */ public static void

Java 里的异常(Exception)详解

作为一位初学者, 本屌也没有能力对异常谈得很深入.   只不过Java里关于Exception的东西实在是很多. 所以这篇文章很长就是了.. 一, 什么是java里的异常 由于java是c\c++ 发展而来的,  首先我们先看看c语言里的错误. 1.1 c语言里的错误 我们实现1个程序的过程包括,  代码编写, 编译代码成为程序,  执行程序. . 其中大部分常见的语法错误都会被编译代码这样部过滤掉.   但是即使通过了编译. 执行程序这一步可能还是会有错误. 原因很多, 例如常见的除数为0,

Java面向对象------>try{}catch(){}异常

在整个异常处理机制中,异常在系统中进行传递,传递到程序员认为合适的位置,就捕获到该异常,然后进行逻辑处理,使得项目不会因为出现异常而崩溃.为了捕获异常并对异常进行处理,使用的捕获异常以及处理的语法格式为:try{//逻辑代码}catch(异常类名 参数名){//处理代码}在该语法中,将正常的程序逻辑代码书写在 try 语句块内部进行执行,这些代码为可能抛出异常的代码,而 catch语句中书写对应的异常类的类名,在 catch语句块内部书写出现该类型的异常时的处理代码.程序执行到 try-catc

java之异常处理(Exception)

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 知识点:异常:java.lang.Throwable(Error/Exception(RuntimeException/其他检查异常类)) java中的异常处理 java.lang.Throwable所有异常类和错误类的父类 --java.lang.Error类:程序运行过程中出现的致命的,严重

Java中的Checked Exception——美丽世界中潜藏的恶魔?

在使用Java编写应用的时候,我们常常需要通过第三方类库来帮助我们完成所需要的功能.有时候这些类库所提供的很多API都通过throws声明了它们所可能抛出的异常.但是在查看这些API的文档时,我们却没有办法找到有关这些异常的详尽解释.在这种情况下,我们不能简单地忽略这些由throws所声明的异常: 1 public void shouldNotThrowCheckedException() { 2 // 该API调用可能抛出一个不明原因的Checked Exception 3 exception

如何处理异常? catch Exception OR catch Throwable

在Java中,当你需要统一处理异常的时候,你是会选择catch (Exception),还是直接catch (Throwable)? Java的异常体系 Throwable: Java中所有异常和错误类的父类.只有这个类的实例(或者子类的实例)可以被虚拟机抛出或者被java的throw关键字抛出.同样,只有其或其子类可以出现在catch子句里面. Error: Throwable的子类,表示严重的问题发生了,而且这种错误是不可恢复的. Exception: Throwable的子类,应用程序应该

java中try{}catch{}和finally{}的执行顺序问题

 今天我给大家讲解一下java的的错误和异常处理机制以及相关异常的执行顺序问题.如有不足的地方,欢迎批评指正~ 1.首相简单介绍一下java中的错误(Error)和异常(Exception) 错误和异常的介绍: 在java.lang软件包中有一个java.lang.Throwable类,这个类是java中所有错误和异常的超类. 在java中错误和异常的继承主要有两个: 分别为Error和Exception 这两个. Error:         是java中所有错误类的父类,就是jvm出现错误,

java之try catch finally

try{ }catch(Exception e){ }finally{ } java异常处理在编程中很常见,将可能抛出异常的语句放在try{}中,若有异常抛出,则try{}中抛出异常语句之后的语句不再执行.catch (Exception e) {}抓取异常并进行处理:若无异常,catch中的语句不执行.finally{}中主要做善后工作,如资源回收.无论是否有异常抛出,finally中的语句都会执行.finally中的语句将会在异常捕获机制退出前被调用. 下面来看三个简单的例子: 例1. pu

【转】case: Java中try catch finally语句中含有return语句的执行情况(总结版)

Java中try catch finally语句中含有return语句的执行情况(总结版) 有一点可以肯定,finally块中的内容会先于try中的return语句执行,如果finall语句块中也有return语句的话,那么直接从finally中返回了,这也是不建议在finally中return的原因.下面来看这几种情况. 情况一(try中有return,finally中没有return): [java] view plain copy public class TryTest{ public