Java - 如何避免使用 try catch 语句

Java - How can I avoid using try catch statements

我想知道如何避免 try-catch 语句。现在我有一个数据库处理程序,每次我 运行 一个命令时,我都必须将它包围在一个 try 块中,如下所示:

try {
    while(levelData.next()) {
        if(levelData.getInt("level") == nextLevel) return levelData.getInt("exp");
    }
} catch (SQLException e) {
    e.printStackTrace();
}   

我能做到让实际函数抛出异常吗?而不是必须手动将所有这些尝试放入?它主要只是一个审美问题,因为这些 try 块看起来很丑。

您可以使用 throws 关键字使方法抛出异常,而不是使用 try- catch 块,但在某些时候需要处理异常。我发现最烦人的是多个 catch 语句,但如果您使用 JDK >= 1.7,它们有一个 multi-catch 选项可用。对于异常日志记录,您可以使用 log4j 库。

您可以改为抛出异常:

public void myMethod() throws SQLException {
     while(levelData.next()) {
        if(levelData.getInt("level") == nextLevel)
           return levelData.getInt("exp");
    }
}

Right now I have a Database handler and every time I run a command I have to surround it in a try block like so...

我认为其他答案未能解决上述问题。当我开始使用 Java 编程时,我讨厌我的程序充满了 SQL 查询语句的 try-catch 块。

我解决这个问题的方法是使用 DAO 级层来处理异常。例如,如果我的程序需要访问一个用户 table,我创建一个 UserDAO class。然后创建查询并在该 DAO class.

中捕获异常

每次发生异常时,我都会执行所需的日志记录并抛出自定义指定的 Unchecked Exception,例如DatabaseErrorException。未检查的异常和检查的异常(如 SQLException)之间的主要区别在于您不会被迫 catchthrow 它,因此它不会用 throws声明。

(是的,你可以使用 throws 来避免使用 try-catch,但无论如何你必须在某个地方处理它,并考虑你的函数有 throws无处不在。)

然后我们可以在应用程序的最高级别设置一个全局过滤器来捕获所有这些通过程序传播的异常。通常数据库错误是无法恢复的,所以这里我们只需要将错误显示给用户即可。