一、    异常的概念:
  若程序都按我们事先设定的计划运行为正常执行,但通常会出现我们事先预料之外的其他情况,称为程序发生异常,
  在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. Hadoop生态上几个技术的关系与区别:hive、pig、hbase 关系与区别  Pig

    Hadoop生态上几个技术的关系与区别:hive.pig.hbase 关系与区别 Pig 一种操作hadoop的轻量级脚本语言,最初又雅虎公司推出,不过现在正在走下坡路了.当初雅虎自己慢慢退出pig的 ...

  2. cmd 修改当前路径

    cd 命令需要加/d,如:

  3. Java【并发】面试题

    精尽 Java[并发]面试题 以下面试题,基于网络整理,和自己编辑.具体参考的文章,会在文末给出所有的链接. 如果胖友有自己的疑问,欢迎在星球提问,我们一起整理吊吊的 Java[并发]面试题的大保健. ...

  4. JMeter轻松实现大数据量AI图像识别接口测试

    ****************************************************************************** 本文主要介绍利用Jmeter进行AI图像识 ...

  5. sublimeText3的安装及插件的配置使用

    这里主要记录一些关于sublime text的配置,并且参照了别人的博客归纳的. 一.下载sublime text   http://www.sublimetext.com/3二.安装Package ...

  6. MVC--MVP?

    第一部分:什么是MVP?什么是MVC? 1.什么是MVP? M:数据层(数据库.网络.文件存储等等...) V:View和Activity和Fragment以及它们的子类 P:中介->Prese ...

  7. spring mvc 配置后,web中的html页面报404,该怎么处理

    问题描述: 在根目录webapp下的jsp页面可以通过url直接访问,而html页面就会报404错误. 解决方案1: 在spring-mvc.xml中添加如下配置: <!--将静态文件指定到某个 ...

  8. 修改Tomcat的端口号方法

      (1).查找conf路径下的server.xml文件,路径如: I: \tomcat6\apache-tomcat-6.0.32\conf\server.xml (2).打开server.xml文 ...

  9. 日文NLP分词系统

    mecab(http://mecab.sourceforge.net/)是奈良先端科技大学开发的日文分词系统,基于CRF的分词原理,有c++实现,提供python.perl.ruby等接口 日文NLP ...

  10. delphi xe10 网络连接

    //当前网络状态(引用 Androidapi.JNI.Network.pas) IsConnected //连接 IsWiFiConnected //Wifi是否连接 IsMobileConnecte ...