• java oop第06章_异常处理


    一、    异常的概念:
      若程序都按我们事先设定的计划运行为正常执行,但通常会出现我们事先预料之外的其他情况,称为程序发生异常,
      在java中会对一些可能出现异常的代码进行分类,达到尽量对可能发生的异常进行判断。
    二、 异常处理之抛出异常:   说明:在方法中有代码会出现异常,方法自己不捕获异常,将异常向外抛出,由调用者来处理异常,若所以的调用者都不处理异常,则由JVM最终处理。   
    1. throws关键字:声明异常,在方法定义部分使用throws指定方法中可以抛出的异常范围,可以指定多个异常范围,之间使用逗号隔开。   2. throw关键字:抛出异常,显式抛出某种异常,该异常是方法定义部分声明过的异常范围。
    package com.oop.ch06;
    
    import org.junit.Test;
    
    public class ThrowTest {
        
        @Test
        public void test1() throws ClassNotFoundException {
            //加载MySQL的驱动:表示当前要去链接MySQL数据库管理系统
            //隐式抛出异常:没有手动显式的抛出异常,而是调用方法时抛出异常
            Class.forName("com.jdbc.mysql.Driver");
        }
        
        @Test
        public void test2() throws ClassNotFoundException {
            //显式抛出异常:通过throw关键字显式的抛出指定范围的异常类型
            throw new ClassNotFoundException("抛出类找不到的异常");
        }
    }
    
    
    
    
    三、    异常处理之捕获异常:
      说明:在方法中有代码会出现异常,方法自己可以通过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("jdbc:mysql://127.0.0.1:3306/数据库名", "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加斜杠提示生成。


  • 相关阅读:
    Android基于mAppWidget实现手绘地图(五)--如何创建地图资源
    Android基于mAppWidget实现手绘地图(四)--如何附加javadoc
    Android基于mAppWidget实现手绘地图(三)--环境搭建
    Android基于mAppWidget实现手绘地图(二)--概要
    Android基于mAppWidget实现手绘地图(一)--简介
    网络通信之Socket与LocalSocket的比较
    Python-Django 整合Django和jquery-easyui
    Python-Django 第一个Django app
    RobotFramework 官方demo Quick Start Guide rst配置文件分析
    RobotFramework RobotFramework官方demo Quick Start Guide浅析
  • 原文地址:https://www.cnblogs.com/zhangzimuzjq/p/11715342.html
Copyright © 2020-2023  润新知