gpt4 book ai didi

java - 抛出异常但未捕获

转载 作者:行者123 更新时间:2023-12-01 06:24:26 24 4
gpt4 key购买 nike

我不明白为什么......我抛出了 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com