[转]java异常中Exception捕获不到的异常

一 概念

众所周知java提供了丰富的异常类,这些异常类之间有严格的集成关系,分类为

父类Throwable

Throwable的两个子类Error和Exception

Exception的两个子类CheckedException和RuntimeException

二 发现问题

通常捕获异常catch的时候最大catch到Exception这个类就为止了,当然这能够处理大部分的异常情况。

但是值得注意的是,Exception不能捕捉到所有的异常。比如InvocationTargetException。

像这类 java.lang.NoClassDefFoundError: org/apache/commons/collections4/IterableUtils,由于NoClassDefFoundError是Throwable的Error子类,所以Exception是捕捉不到的

三 解决办法

catch(Throwable t)
{  }

时间: 2025-01-06 07:10:18

[转]java异常中Exception捕获不到的异常的相关文章

Java正则表达式中的捕获组的概念(转)

要弄清这三个方法,首先要弄清Java正则表达式中的捕获组的概念.捕获组也就是Pattern中以括号对“()”分割出的子Pattern.至于为什么要用捕获组呢,主要是为了能找出在一次匹配中你更关心的部分.捕获组可以通过从左到右计算其开括号来编号.例如,在表达式 "(x)(y\\w*)(z)" 中,存在三个这样的组:  1.  x2.  y\\w*3.  z组零始终代表整个表达式.之所以这样命名捕获组是因为在匹配中,保存了与这些组匹配的输入序列的每个子序列.捕获的子序列稍后可以通过 Bac

python中os模块的常用接口和异常中Exception的运用

1.os.path.join(arg1, arg2) 将arg1和arg2对应的字符串连接起来并返回连接后的字符串,如果arg1.arg2为变量,就先将arg1.arg2转换为字符串后再进行连接. 2.self.settings = Gio.Settings.new("com.linuxmint.mintmenu") 在默认环境路径中,根据“com.linuxmint.mintmenu”开头的XML配置文件创建配置变量self.settings,通常XML配置文件位于/usr/shar

检查型异常(Checked Exception)和非检查型异常(Unchecked Exception)的区别

最近温故spring事务相关知识点,我们知道Spring的事务管理默认只对出现运行期异常(java.lang.RuntimeException及其子类)进行回滚 (至于为什么spring要这么设计:因为spring认为Checked的异常属于业务的,程序猿需要给出解决方案而不应该直接扔该框架) 这里就引出一个小的知识点,什么是Checked Exception?什么是Unchecked Exception? 其实,Java语言规范对这两个定义十分简单,将派生于Error或者RuntimeExce

java异常—检查异常(checked exception)和未检查异常(unchecked exception)

网易面试要我画异常的结构图,什么是检查异常,什么是非检查异常,我当时的表情是这样的,.我看过,忘了.没办法,继续看,写博客掌握. 先来看看异常的结构图,建议你结合JDK一起看. 可以看出异常的家族势力庞大,通常我们说的异常是包括exceptio和error. Exception家族我们恐怕见的不少,但是error家族我们可能就没什么印象了,下面我来说说这两个类的区别: Error(错误):是程序无法处理的错误,表示运行应用程序中较严重问题.大多数的错误与代码编写者执行的操作无关,而是表示代码运行

java学习中,异常和错误的简介、捕获异常、抛出异常、自定义异常(java 学习中的小记录)

java学习中,异常和错误的简介.捕获异常.抛出异常.自定义异常(java 学习中的小记录)作者:王可利(Star·星星) 异常:(API 的 java.lang 有一个异常,有很多很多) 在Java程序中也会程序出现不正常的情况,这个就叫异常.     Java是面向对象的语言,任何事物都可以用类来描述,同样的异常也是一种事物.Java中提供了很多的异常类.     多个异常堆积起来,就是一个异常体系.   Throwable:是异常类的父类,超类.Exception 异常.error错误.

JAVA基础篇三(Java,C++中的异常机制)

由于C++和JAVA有很多相似之处,又有很多细微的差别,所以在学习JAVA的过程中对两种语言进行对比学习. 1.C++的异常机制 C++中处理异常的过程是这样的:在执行程序发生异常,可以不在本函数中处理,而是抛出一个错误信息,把它传递给上一级的函数来解决,上一级解决不了,再传给其上一级,由其上一级处理.如此逐级上传,直到最高一级还无法处理的话,运行系统会自动调用系统函数terminate,由它调用abort终止程序.这样的异常处理方法使得异常引发和处理机制分离,而不在同一个函数中处理.这使得底层

Java知多少(52)内置异常

在标准包java.lang中,Java定义了若干个异常类.前面的例子曾用到其中一些.这些异常一般是标准类RuntimeException的子类.因为java.lang实际上被所有的Java程序引入,多数从RuntimeException派生的异常都自动可用.而且,它们不需要被包含在任何方法的throws列表中.Java语言中,这被叫做未经检查的异常(unchecked exceptions ).因为编译器不检查它来看一个方法是否处理或抛出了这些异常. java.lang中定义的未经检查的异常列于

C# 知识回顾 - 你真的懂异常(Exception)吗?

你真的懂异常(Exception)吗? 目录 异常介绍 异常的特点 怎样使用异常 处理异常的 try-catch-finally 捕获异常的 Catch 块 释放资源的 Finally 块 一.异常介绍 我们平时在写程序时,无意中(或技术不够),而导致程序运行时出现意外(或异常),对于这个问题, C# 有专门的异常处理程序. 异常处理所涉及到的关键字有 try.catch 和 finally 等,用来处理失败的情况. CLR..NET 自身的类库.其它第三方库或者你写的程序代码都有可能会出现异常

Java Matcher类 replaceAll 捕获组使用及使用符号$引用捕获组

Java Matcher类 replaceAll 捕获组使用及使用符号$引用捕获组 最近看了一段解析URL以判断支付方式是在线支付还是具体哪个网银或支付宝的代码.如下 private String[] getAction(String url){ String action = null; String pluginid = null; String pattern = "/(\\w+)_(\\w+)_(\\w+).html(.*)"; Pattern p = Pattern.comp