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加斜杠提示生成。
java oop第06章_异常处理的更多相关文章
- Java oop 第13章_多线程
第13章_多线程 一. 多线程相关的概念: 程序:由某种编程语言开发可执行某些功能的代码组合,它是静态的概念. 进程:当程序被执行时的过程可以理解为讲程序从外存调入内存的过程,会为每一个程序 ...
- java oop第11章_反射、BaseDao的进一步改造
引言:从Java5开始,Java中引用了一个新的概念反射,当程序运行时,能动态感知到程序中拥有的所以信息,这个获取信息的过程是采用反射机制来完成. 一. Class类: Class类用 ...
- java oop第07章_集合框架
一. 什么是集合: 在Java中提供了一些可以保存同一数据类型的数据集称为集合,就是规定了一些集合的规范(接口.抽象类.实现类)及方法, 方便我们程序在保存数据时进行增.删.改.查操作,编程更加高效. ...
- Java oop第05章_多态、接口
一. 为什么需要接口? Java中当一个类继承父类时,最多也只能继承一个父类,扩展性会受到一定的限制,为了弥补这一缺陷,Java又提供了一种新的引用数据类型分类,叫接口. 一个类只能继承一个父类,但可 ...
- java OOP第03章_继承、抽象类和抽象方法
一. 为什么需要继承: 若多个类中都需要一些属性和方法,那么就可以将属性和方法抽取到一个父类中,需要的子类可以通过extends关键字去继承这个父类后拥有相应的属性和方法. 类.数组.方法----引用 ...
- java oop第09章_JDBC02(CRUD操作)
第09章_JDBC02(CRUD操作) CRUD(CREATE . RETIVE . UPDATE . DELETE)增删改查. DAO中会提供一些CRUD操作方法,调用者可以通过调用这些方法完成相应 ...
- Java OOP——第五章 异常
1. 尝试通过if-else来解决异常问题: Eg: public class Test2 { public static void main(String[] args) { ...
- java oop第15章_Socket网络编程
一. TCP/IP协议(Transmission Control Protocol/Internet Protocol)传输控制协议/Internet协议,是通信领域的基础.核心协议, 其他的协议 ...
- java oop第14章_Swing(Java界面设计)
一. Swing相关的概念: 1. GUI:(Graphical User Interface):图形化用户界面,通过图形化的方式提供与用户交互的平台,向用户展示信息.收集用户提交的数据. 2. ...
随机推荐
- mongodb 数据修改
update:语法格式如下: db.collection.update( <query>, <update>, { upsert: <boolean>, multi ...
- centos7.3 编译安装 git 2.13
安装依赖包 sudo yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel 安装 $ ...
- es概念一句话简介和注意点
1.elasticsearch是什么? 一个实时分布式搜索(全文or结构化)和分析引擎,面向文档(document oriented) 2.主节点(Master Node)职责? 负责集群中的操作(如 ...
- 如何删除github里的项目
1.登录github网站后,就会看到如下画面,在头像下面有个你的项目资源这一栏,假如我要删除名为“hhh”的项目,现在鼠标点进这个项目里面 2.进去后点setting 点进去后,默认是选择了OPtio ...
- javascript基础入门之js中的数据类型与数据转换01
javascript基础入门之js中的数据结构与数据转换01 js的组成(ECMAScript.BOM.DOM) js中的打印语句: 数据类型 变量 ...
- GitHub上传项目之初体验
git工具是很早之前安装的,之前还没有github账号,现在注册了一个,想学一下托管自己的项目和代码. 登录github账号之后,点击绿色的"New repository",输入名 ...
- 基于物品的协同过滤(ItemCF)
- pandas读书笔记、重新索引
重新索引 pandas对象的一个重要方法是 reindex ,其作用是创建一个适应新索引的新对象. #reindex函数的参数 reindex(index,method,fill_value, ...
- 25. object类中的一些方法分析
1. Object java是面向对象语言,所以其核心思想: 找合适的对象,做合适的事 Object是所有类的终极基类.任何一个类都继承了Object类 2. Object的部分函数列表 1)Stri ...
- leetcode-并查集
- 题目:130 并查集: class Solution: def solve(self, board: List[List[str]]) -> None: """ ...
