的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", ""); } }