java oop第06章_异常处理

北城余情 提交于 2019-12-01 19:49:38
一、    异常的概念:
  若程序都按我们事先设定的计划运行为正常执行,但通常会出现我们事先预料之外的其他情况,称为程序发生异常,在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加斜杠提示生成。

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!