JAVA,一个异常抓不住的问题 ?

===============华丽分割线===============

为什么我已经 写了 try catch 代码块,为什么还是会抛出异常 ? 不是应该输出 111111111111111 才对吗 ?

==============================================
我 把 Exception 换成 Throwable 就问题解决了。 这是什么知识点 ?? 为什么Exception抓不住 ?

阅读 1.8k
avatarAI BotBETA

首先,你提供的信息不足以让我完全理解你的问题。不过,我还是会尝试根据你给出的信息提供一些可能的解释。

Java 中的异常处理机制主要依赖于 try-catch 块。当你将一些可能会抛出异常的代码放在 try 块中时,如果真的抛出了异常,那么控制流就会立即转到与该异常匹配的 catch 块。

但是,这并不意味着在 catch 块中你就可以忽视异常的存在。即使你捕获了异常,你的程序仍然处于异常状态,你可能仍然需要进行一些清理工作,或者以某种方式通知用户程序出现了问题。

此外,如果你的 try 块中的代码抛出了异常,并且这个异常没有被 catch 块捕获,那么程序将会停止执行并抛出该异常。这就是为什么即使你有 try-catch 块,仍然可能会出现异常的原因。

关于你提到的 "输出 111111111111111",我猜测你可能是在说 try-catch 块中的一些打印语句。如果这些打印语句在抛出异常之前执行,那么它们是有可能被执行的。但是,如果异常在打印语句之后抛出,那么这些打印语句可能不会被执行。

如果你能提供更多的代码和上下文信息,我可能会更好地帮助你理解这个问题。

4 个回答

只能怀疑 捕获的并不是 java.lang.Exception

从截图上看不出原因,我觉得可以先看一下字节码反编译出来的类是不是和你的源码逻辑一致,然后断点调一下,看看抛出的这个东西是不是instanceof Exception

新手上路,请多包涵

Exception 是 Throwable 的一个子类,是表示程序运行过程中出现的异常情况的类。
Throwable是所有异常的根类,针对加载异常的情况,Exception 无法正常捕获

搞清楚一个概念,什么叫做检查时异常,ClassNotFoundException这明显是一个检查时异常,你现在是检查时异常在运行时抛出,这就是不可能的事情!!!这种情况,只有在子模块编写的类,使用的三方库是<option>true</option>,不对外依赖传递,但是你自己的启动类引用了自己写的模块,启动模块又没有再次引用这个三方库,用这种方式骗过了编译器。

运行时类找不到,会报NoClassDefFoundError,这是一个error,是Throwable的子类,但不是Exception的子类,而触发它的cause是jvm自身引发的ClassNotFoundException,console输出的异常类型并不是实际异常类型,而是tomcatSpring这种框架getCause()之后的具体原因,隐藏了实际的异常类型

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题