我这里有一个奇怪的问题
在我的 ejbCreate() 方法中,我将前端填充的字段值插入到数据库中,完成了 Null 检查,因此可为空的字段将转换为“”(空白)字段,并且该行已正确插入进入数据库。
现在我的 ejbstore() 方法没有相同的 null 检查,因此它总是抛出“java.sql.SQLException”,但以下内容 catch (java.sql.SQLException e) 用于捕获它并且应用程序运行良好。
现在 Unix 盒子(我的操作系统)中添加了一个新补丁,现在“catch (java.sql.SQLException e) block ”中没有捕获相同的异常,而是属于通用“异常 block ” ”,所以我的代码抛出“CORBA 相关的 NullPointerException”并且应用程序崩溃。
任何人都可以知道操作系统补丁如何更改 Java 异常类型层次结构吗??
最佳答案
我想知道是否存在一些奇怪的类加载器问题。
请记住,只有当两个类是同一个类并且由同一类加载器加载时,它们才是“相同”的。
如果抛出 SQLExcpetion 的组件从一个类加载器加载它,而您的组件从其他地方加载它,那么我怀疑您可能会得到这种效果。
因此,操作系统补丁是否会影响 JDBC 驱动程序或加载它们的类路径?或者操作系统补丁是否已将 SQLException 的副本放置在新的位置。或者操作系统补丁是否设置了影响某些组件的类路径的环境变量?
关于Java异常层次结构问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1687134/