`
h389301776
  • 浏览: 9346 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

第四章:异常处理 的学习

 
阅读更多

第四章:异常处理

1.异常的概念

Java异常是java提供的用于处理程序中错误的一种机制。

所谓错误是指在程序运行的过程中发生的一些异常事件(如:除0溢出,数组下标越界,所要读取的文件不存在等等)。

设计良好的程序应该在异常发生时提供处理这些错误的方法,使得程序不会因为异常的发生而阻断或产生不可预见的结果。

Java程序的执行过程中如出现异常事件,可以生成一个异常类对象,该异常对象封装了异常事件的信息并将被提交给java运行时系统,这个过程称为抛出(throw)异常

java运行时系统收到异常对象时,会寻找能处理这个异常的代码并把当前异常对象交给其处理,这一过程称为捕获(catch)异常

 

2.异常的分类

JDK中定义了很多异常类

 

Throwable 

Error

Exception

Runtime Exception

 

 

Error:称为错误,由java虚拟机生成并抛出,包括动态链接失败、虚拟机错误等,程序对其不做处理。

Exception:所有异常类的父类,其子类对应了各种各样可能出现的异常事件,一般需要用户显示的声明或捕获。

Runtime Exception:一类特殊的异常,如被0除、数组下标超出范围等,其产生比较频繁,处理麻烦,如果显示的声明或捕获将会对程序可读性和运行效率影响很大。因此由系统自动检测并将它们交给缺省的异常处理程序(用户可不必对其处理)。

系统中常见的异常与其结构:

Exceptionin java.lang

  ClassNotFoundException

  IOException

  InterruptedException

RuntimeException

    ArithmeticException

    IndexoutofBoundsException

         ArrayIndexoutobBoundsException

         StringIndexoutobBoundsException

 

 

3.异常的捕获和处理trycatchfinallythrows

格式:

 

try{

//可能抛出异常的语句

}catch(SomeException1  e){

……

} catch(SomeException2  e){

……

}finally{

……

}

 

try代码段包含可能产生例外的代码,可以跟一个或多个catch代码段,每一catch代码段声明其能处理的一种特定类型的异常并提供处理的方法,当异常发生时,程序会终止当前的流程,根据获取的异常的类型去执行相应的catch代码,finally段的代码无论是否发生异常都有执行。

catch语句块中是对异常进行处理的代码,每个try语句块可以伴随一个或多个catch语句,用于处理可能产生的不同类型的异常对象。

catch中声明的异常对象(catch(SomeException e))封装了异常事件发生的信息,在catch语句块中可以使用这个对象的一些方法获取这些信息。

例如:

getMessage( )方法,用来得到有关异常事件的信息。

printStackTtace( )方法,用来跟踪异常事件发生时执行堆栈的内容。

 

Finally语句为异常处理提供一个统一的出口,使得在控制流程转到程序的其他部分以前,能够对程序的状态作统一的管理。

无论try所指定的程序块中是否抛出例外finally所指定的代码都要被执行。

通常在finally语句中可以进行资源的清理工作,如:关闭打开的文件  删除临时文件

 

Java的例外处理机制使得例外事件沿着被调用的顺序往前寻找,只要找到符合该例外种类的例外处理程序。

 

main方法中也可以定义抛出异常,最后将错误的堆栈信息打印出来如下格式:

public static void main(String[] args) throws Exception{}

但是身为程序员应该用try{}catch(){}去捕获处理异常

 

例子:

import java.io.*;

 

public class TestEx {

public static void main(String[] args) {

FileInputStream in = null;

        try {

            in = new FileInputStream("myfile.txt");

            int b;

            b = in.read();

            while (b != -1) {

                System.out.print((char) b);

                b = in.read();

            }

 

 

        } catch (FileNotFoundException e) {

            e.printStackTrace();

 

        } catch (IOException e) {

            System.out.println(e.getMessage());

        } finally {

            try {

                in.close();     //关闭文件

            } catch (IOException e) {

                e.printStackTrace();

            }

        }

 

    }

 

异常的捕获和处理中catch()中的异常信息要注意先逮小再逮大,否则会出错

 

4.自定义异常throw语句

  使用自定义的异常一般有如下步骤:

1)  通过继承java.lang. Exception类声明自己的异常类。

2)  在方法适当的位置生成自定义异常的实例,并用throw语句抛出

3)  在方法法声明部分用throws 语句声明该方法可能抛出的异常

 

例子:

class MyException extends Exception{

    private int id ;

    public MyException (String message,int id){

         super(message);

        this.id = id;

    }

    public int getId(){

        return id ;

    }

}

public class Test {

    public void regist(int num) throws MyException{

        if (num < 0)

            throw new MyException("人数为负值,不合理"3);

        }

        System.out.println("登记人数" + num);

    }

    public void manager(){

        try {

            regist(100);

        }

        catch (MyException e){

            System.out.println("登记失败,出错类型码=" + e.getId());

            e.printStackTrace();

        }

        System.out.print("操作结束");

    }

    public static void main(String[] args){

        Test t = new Test();

        t.manager();

    }

}

 

5.异常重写方法

注意:重写异常方法时需要抛出与原方法所抛出的异常类型一致的异常或不抛出异常

例子:

class A{

    public void method() throws IOException{}

}

class B1 extends A {

    public void method() throws FileAlreadyExistsException{} //错误

}

class B2 extends A {

    public void method() throws Exception{} //错误

}

class B3 extends A {

    public void method(){}

}

class B4 extends A {

    public void method() throws IOException, MyException { //错误

    }

}

分享到:
评论

相关推荐

    mfc编程 第一到十章

    本教程是ppt格式,适合初学mfc的编程,内容详尽,易懂。都是自己学习过了才上传到这里...第四章:图形操作 第五章:文档和视 第六章:文档操作 第七章:mfc 通用类 第八章:异常处理 第九章:多线程 第十章:数据库编程

    python详细学习教程.rar

    第四章:列表,元组,字典和集合 第五章:Python字符串常用方法 第六章:Python流程控制 第七章:函数和lambda表达式 第八章:Python类和对象 第九章:Python异常处理机制 第十章:类特殊成员 第十一章 Python模块...

    Java SE完整版精品优质课件 自学入门必看的优秀Java基础知识培训教案 第06章_异常处理(共41页).pptx

    Java SE完整版精品优质课件 自学入门...第4章 高级类特性1 第5章 高级类特性2 第6章 异常处理 第7章 Java集合 第8章 泛型 第9章 注解&枚举 第10章 IO 第11章 多线程 第12章 Java常用类 第13章 Java反射 第14章 网络编程

    最新Python深度之眼高级开发班 Python并发编程与高级开发技术实战课程 Python特优课程

    (1)\01 第一阶段;...├─第十五章异常处理.pdf ├─第十四章类的宿主.pdf (9)\04 第四阶段\第四阶段图文教程;目录中文件数:5个 ├─第二十章套接服务.pdf ├─第十七章通信原理.pdf ├─第十九章套接编程.pdf

    J2EE学习笔记

    第四章:面向对象基本概念 155 4.1:统一建模语言UML 155 4.2:面向对象设计原则 165 第五章:软件系统架构设计 167 第六章:J2EE专题学习 167 6.1:EJB 167 6.2:JMS 172 6.3:Socket 182 6.4:WebService 189 6.5:集群...

    Java开发技术大全源代码

    第4章 示例描述:本章学习继承与多态。 第5章 示例描述:本章学习数组与字符串。 第6章 示例描述:本章学习Java的异常处理。 第7章 示例描述:本章学习Java的输入和输出。 第8章 示例描述:本章学习多线程。 第9章 ...

    Java开发详解.zip

    010401_【第4章:数组与方法】_数组的定义及使用笔记.pdf 010402_【第4章:数组与方法】_方法的声明及使用笔记.pdf 010403_【第4章:数组与方法】_数组的引用传递笔记.pdf 010404_【第4章:数组与方法】_Java新特性...

    第12章 异常处理(郑莉 C++语言程序设计(第4版))

    本书针对程序设计的初学者,以面向对象的程序设计思想为主线,以通俗易懂的...此外,本教材还介绍了一些常用数据结构基础知识,使得读者学习本书后,能够解决一些简单的实际问题。整套教材语言生动、流畅,深入浅出。

    J2SE学习上半部分

    第一章:JAVA概述 第二章:JAVA语言基础 第三章:面向对象编程 第四章:JAVA异常处理机制 第五章:数组

    Spring+3.x企业应用开发实战光盘源码(全)

     第4章:讲解如何在Spring配置文件中使用Spring 3.0的Schema格式配置Bean的内容,并对各个配置项的意义进行了深入的说明。  第5章:对Spring容器进行解构,从内部探究Spring容器的体系结构和运行流程。此外,我们...

    book-of-ruby:来自《Ruby 之书》一书的源代码

    第 9 章:异常处理 第 10 章:块、过程和 Lambda 第11章:符号 第 12 章:模块和 Mixin 第 13 章:文件和 IO 第14章: YAML 第15章:元帅 第 16 章:正则表达式 第17章:线程 第 18 章:调试和测试 第 19 章: ...

    java学习课件 第四章

    这是关于学习java基础的课件 第一章、java语言基础 ...第四章、applet及其应用 第五章、图形用户界面设计 第六章、异常处理 第七章、线程 第八章、集合操作 第九章、文件输入输出 第十章、网络编程

    ASP.NET 2.0网络开发详解 源代码 和Net电子书

    第4章 常用控件 第5章 类 第6章 抽象类、多态及接口 第7章 处理异常和错误 第8章 XML编程 第9章 应用程序部署 第10章 时间跟踪系统 4.dot NET学习电子书\dot NET数据库开发技术(154页) 第1章 操作数据库 第2章 ...

    Java语言基础下载

    第四章: Java语法基础 47 学习目标 47 基本语法元素 48 Java关键字 49 基本Java数据类型 50 变量声明和赋值 52 引用(Reference)类型 52 存储器分配和布局 53 this引用 55 Java编码约定 56 运算符的优先级 58 升级...

    python入门学习资料

    第 6 章 异常和文件处理 第 7 章 正则表达式 第 8 章 HTML 处理 第 9 章 XML 处理 第 10 章 脚本和流 第 11 章 HTTP Web 服务 第 12 章 SOAP Web 服务 第 13 章 单元测试 第 14 章 测试优先编程 第 15 章 重构 第 16...

    陈开雄 Spring+3.x企业应用开发实战光盘源码.zip

     第4章:讲解如何在Spring配置文件中使用Spring 3.0的Schema格式配置Bean的内容,并对各个配置项的意义进行了深入的说明。  第5章:对Spring容器进行解构,从内部探究Spring容器的体系结构和运行流程。此外,我们...

    java学习课件第三章

    这是关于学习java基础的课件 第一章、java语言基础 ...第四章、applet及其应用 第五章、图形用户界面设计 第六章、异常处理 第七章、线程 第八章、集合操作 第九章、文件输入输出 第十章、网络编程

    Pyhton实用教程-第1章-初识Python.pptx

    目录 PAGE 3 第1章 初识Python 第2章 基本数据类型 第3章 Python的流程控制 第4章 数组操作 第5章 文件操作 第6章 绘制需要的图表 第7章 函数 第8章 面向对象 第9章 异常 第10章 集合与概率 第11章 学点统计学 第12...

    java学习课件,网络编程语言

    绝好的Java学习资料。。。 内容简介: 第一章 java 简介;...第四章 java 中的对象、类、包和接口; 第五章 异常处理; 第六章 编写文本应用程序; 第七章 线程; 第八章 java的输入输出 ............... 等等

    Python学习手册_第四版

    如果你想要编写高质量、高效的并且易于与其他语言和工具集成的代码,《Python学习手册:第4 版》将帮助你使用Python快速实现这一点,不管你是编程新手还是Python初学者。本书是易于掌握和自学的教程,根据作者Python...

Global site tag (gtag.js) - Google Analytics