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

java oop第06章_异常处理的更多相关文章

  1. Java oop 第13章_多线程

    第13章_多线程 一.   多线程相关的概念:  程序:由某种编程语言开发可执行某些功能的代码组合,它是静态的概念.   进程:当程序被执行时的过程可以理解为讲程序从外存调入内存的过程,会为每一个程序 ...

  2. java oop第11章_反射、BaseDao的进一步改造

      引言:从Java5开始,Java中引用了一个新的概念反射,当程序运行时,能动态感知到程序中拥有的所以信息,这个获取信息的过程是采用反射机制来完成. 一.       Class类: Class类用 ...

  3. java oop第07章_集合框架

    一. 什么是集合: 在Java中提供了一些可以保存同一数据类型的数据集称为集合,就是规定了一些集合的规范(接口.抽象类.实现类)及方法, 方便我们程序在保存数据时进行增.删.改.查操作,编程更加高效. ...

  4. Java oop第05章_多态、接口

    一. 为什么需要接口? Java中当一个类继承父类时,最多也只能继承一个父类,扩展性会受到一定的限制,为了弥补这一缺陷,Java又提供了一种新的引用数据类型分类,叫接口. 一个类只能继承一个父类,但可 ...

  5. java OOP第03章_继承、抽象类和抽象方法

    一. 为什么需要继承: 若多个类中都需要一些属性和方法,那么就可以将属性和方法抽取到一个父类中,需要的子类可以通过extends关键字去继承这个父类后拥有相应的属性和方法. 类.数组.方法----引用 ...

  6. java oop第09章_JDBC02(CRUD操作)

    第09章_JDBC02(CRUD操作) CRUD(CREATE . RETIVE . UPDATE . DELETE)增删改查. DAO中会提供一些CRUD操作方法,调用者可以通过调用这些方法完成相应 ...

  7. Java OOP——第五章 异常

    1. 尝试通过if-else来解决异常问题: Eg: public class Test2 {       public static void main(String[] args) {       ...

  8. java oop第15章_Socket网络编程

    一.   TCP/IP协议(Transmission Control Protocol/Internet Protocol)传输控制协议/Internet协议,是通信领域的基础.核心协议, 其他的协议 ...

  9. java oop第14章_Swing(Java界面设计)

    一.   Swing相关的概念: 1.  GUI:(Graphical User Interface):图形化用户界面,通过图形化的方式提供与用户交互的平台,向用户展示信息.收集用户提交的数据. 2. ...

随机推荐

  1. 访问者模式和 ASM

    文章目录 一. 概述 & 定义 二. 示例 2.1 创建抽象元素 2.2 创建具体元素 2.3 创建抽象访问者 2.4 创建具体访问者 2.5 访问者代码调用 三. ASM 中的访问者模式 3 ...

  2. 网页压缩--gzip和deflate的区别

    我们在配置网站GZip压缩的时候,会发现有两个模块可以设置的,一个是GZip模块的参数配置,另一个是Deflate模块的参数配置,他们的设置方法是一样的.刚开始时我不太明白,这两地方有什么不同?网站开 ...

  3. jquery中的ajax方法参数的用法和他的含义

    jquery中的ajax方法参数的用法和他的含义: 1.url:  要求为String类型的参数,(默认为当前页地址)发送请求的地址. 2.type:  要求为String类型的参数,请求方式(pos ...

  4. 7. Jmeter-逻辑控制器介绍与使用

    逻辑控制器介绍与使用 如果(if)控制器 事物控制器 循环控制器 while controller critical section controller foreach控制器 include con ...

  5. springMvc请求路径解析

    一开始我的代码是: //index.jsp<%@ page contentType="text/html;charset=UTF-8" language="java ...

  6. JQuery中内容操作函数、validation表单校验

    JQuery:内容体拼接(可以直接拼接元素节点和内容节点) JQuery实现: 方案1:A.append(B); == B.appendTo(A);A的后面拼接B 方案2: A.prepend(B); ...

  7. leetcode.哈希表.594最长和谐子序列-Java

    1. 具体题目: 和谐数组是指一个数组里元素的最大值和最小值之间的差别正好是1.现在,给定一个整数数组,你需要在所有可能的子序列中找到最长的和谐子序列的长度. 示例 1: 输入: [1,3,2,2,5 ...

  8. drf中间件流程图

  9. 随笔-ansible-6

    Ansible中的变量引用有时候需要双引号,有时候不需要双引号,这是因为Ansible是多人协作的作品,所以没有统一. 一切以官网说明为主,同时自己也要实践. 这是一个example.yml文件,我们 ...

  10. mongodb入门篇

    MongoDB 入门篇 分类: NoSQL, 故障解决 undefined 1.1 数据库管理系统 在了解MongoDB之前需要先了解先数据库管理系统 1.1.1 什么是数据? 数据(英语:data) ...