Java如何使用throws关键字声明方法异常?

的throws关键字将在方法声明用于指定哪些异常不方法主体内处理的,而是传递给该程序的下一个较高的水平。方法中所有不是实例的未捕获异常都RuntimeException必须使用throws关键字声明。

在下面的示例中,您可能会看到该getConnection()方法可能会导致ClassNotFoundException无法找到驱动程序类和SQLException无法启动与数据库的连接。

另一方面main(),调用该getConnection()方法的方法应捕获该getConnection()方法在其主体中引发的所有异常。

package org.nhooo.example.fundamental;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class ThrowsExample {
    public static void main(String[] args) {
        Connection connection = null;

        try {
            // 可能抛出ClassNotFoundException或SQLException
            // 这就是为什么我们应该抓住他们。
            connection = getConnection();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            System.out.println("Finally is always executed");
            System.out.println("Close connection");
            try {
                if (connection != null && !connection.isClosed()) {
                    connection.close();
                }
            } catch (SQLException e) {
                System.out.println("Sql exception caught");
            }
        }
    }

    /**
     * Get database connection.
     *
     * @return Connection
     * @throws ClassNotFoundException
     * @throws SQLException
     */
    private static Connection getConnection()
            throws ClassNotFoundException, SQLException {
        Class.forName("com.mysql.jdbc.Driver");
        return DriverManager.getConnection(
                "jdbc:mysql://localhost/nhooodb", "root", "");
    }
}