java - 抛出异常但未捕获

标签 java exception

我不明白为什么......我抛出了 2 个异常,但我无法捕获它们。

在一个库中,我有这段代码,它抛出 2 种不同类型的异常。

try {
    statement = con.prepareStatement(query);
    if (statement.executeUpdate() != 1) {
        throw new InvalidIndexException("Record not found or not modified", query);
    }
} catch (SQLException e) {
    throw new DatabaseIOException(e, "", "SQL Error", logQuery);
}

查询被修改以触发 SQL 错误。当它发生时,我有一个日志条目:

2013-04-26 12:19:39 class database.DatabaseIOException
userManagement.Login.setActivationFlag(Login.java:473) 
-> SQL Error
[QUERY]: UPDATE login SET activationprTTTTocess='false' WHERE  id=235423432
[MSG]: ERROR: column "activationprttttocess" of relation "login" does not exis

因此,我确信 sqlerror 已被捕获并重新抛出为 DatabaseIOException,我也使用 Netbeans 在 Debug模式下跟踪代码执行。现在一切都好。

现在我有一个 servlet,我尝试在其中激活用户:

try{
   Login.setActivationFlag(235423432, false);
} catch (DatabaseIOException db) {
   Log.addItem(db.getMessage());
} catch (InvalidIndexException ed){
   Log.addItem(ed.getMessage());
}

Wathewer 我尝试没有办法进入任何 catch block 。当执行 Login.setActivationFlag 行时,错误会出现在日志中(如上所示),但 catch block 会被跳过,就像没有附加任何内容一样。

我不明白为什么会有这种奇怪的行为。我使用这些异常(exception)已经 3 年了,没有任何问题...... 这段代码一定有一些我看不到的非常愚蠢的东西......

最佳答案

您是否捕获相同类型的 DatabaseIOException?如果在不同的 namespace 中存在具有相同名称的异常,并且自动完成通过导入该类来“帮助”,您将获得您所描述的行为。

关于java - 抛出异常但未捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16235491/

相关文章:

java - Arraylist 将最后一个元素读取为倒数第二个元素

java - Postgres UTC 到 Java ZonedDateTime

python - 我得到 "TypeError: exceptions must derive from BaseException"即使我确实定义了它

.net - LINQ 和 .COUNT 超时

java - 在调用正确的@Path 后,Jersey 返回 404

java - 带 Android 注释的自定义标题

java - 带有详细页面的“图书馆”

java - 如何在 Java 中修改对象时对其进行迭代?

java - 每个模块(在多模块 Maven 项目中)是否应该有自己专用的异常?

C# 重新抛出异常