一、 异常的概念: 若程序都按我们事先设定的计划运行为正常执行,但通常会出现我们事先预料之外的其他情况,称为程序发生异常,在java中会对一些可能出现的代码进行分类,达到尽量对可能发生的异常进行判断。 二、 异常处理之抛出异常: 说明:在方法中有代码会出现异常,方法自己不捕获异常,将异常向外抛出,由调用者来处理异常,若所以的调用者都不处理异常,则由JVM最终处理。 1. throws关键字:声明异常,在方法定义部分使用throws指定方法中可以抛出的异常范围,可以指定多个异常范围,之间使用逗号隔开。 2. throw关键字:抛出异常,显示抛出某种异常,该异常是方法定义部分声明过的异常范围。 三、 异常处理之捕获异常: 说明:在方法中有代码会出现异常,方法自己可以通过try…catch…finally捕获并处理异常,调用者就不需要再处理异常。 1. 语法: try { //试图执行的目标代码,其中可能有异常出现 } catch(异常类型 异常对象){ //在try代码块中若出现异常会自动执行的代码块 }finally{ //不管try代码块中是否出现异常都会被执行的代码块 } 2. 举例:com.oop.ch06.TryTest package com.oop.ch06; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStream; import java.sql.*; import java.sql.DriverManager; import java.sql.SQLException; import org.junit.Test; /* * 异常处理之捕获异常: 说明:在方法中有代码会出现异常,方法自己可以通过try…catch…finally捕获并处理异常,调用者就不需要再处理异常。 */ public class TryTest { @Test public void test1() { //表示加载c:/windows/hh.exe下的文件到内存,等待后续的处理。 try { InputStream inputStream = new FileInputStream("c:/windows/hhh.exe"); } catch (FileNotFoundException e) { //FileNotFoundException e = new FileNotFoundException(); //若try代码块发生异常,打印堆栈信息 e.printStackTrace(); } } @Test public void test2() { //调用者就不需要再处理异常 this.test1(); } @Test public void test3(){ //加载MySQL的驱动:表示当前要去链接MySQL数据库管理系统 //隐式抛出异常:没有手动显式的抛出异常,而是调用方法时抛出异常 Connection ct = null; PreparedStatement pst = null; ResultSet rs = null; try { Class.forName("com.jdbc.mysql.Driver"); ct = DriverManager.getConnection("127.0.0.1", "root", "root"); pst = ct.prepareStatement("SELECT * FROM tb_grade WHERE grade_id = ?"); pst.setInt(1, 3); rs = pst.executeQuery(); } catch (SQLException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } finally { try { /* * 通常用于关闭一些打开的资源:IO的资源、SQL的资源。 * 关闭资源的顺序应采用倒叙的方式来关闭:先开的后关,后开的先关 */ if (rs != null) { rs.close(); } if (pst != null) { pst.close(); } if (ct != null) { ct.close(); } } catch (Exception e2) { } } } } 3. 使用try。。catch。。。finally捕获异常的注意事项: a) Catch代码块可以有多个,每个catch代码块可以捕获一种类型的异常,但需要注意:范围小的异常要放置在范围大的异常前面; 若异常类型之间没有继承关系顺序没有限制。 b) 可以使用try。。。catch或try。。。finally或try catch finally三种组合的使用方式。 c) 通常用于关闭一些打开的资源:IO的资源、SQL的资源。 关闭资源的顺序应采用倒叙的方式来关闭:先开的后关,后开的先关 四、 myeclipse生成try catch finally代码块的三种方式: 1、 代码本身提示抛出异常时通过IDE工具提供的提示生成。 2、 选择需要捕获异常的代码=>右键=>surround With =>try catch生成(单个和多个catch)。 3、 手动输入try,alt加斜杠提示生成。