zoukankan      html  css  js  c++  java
  • 从零开始学Java 第12章 异常处理

    第12章  异常处理
    世界上没有完美的事情,一个完善的程序不可能总是会准确无误的运行,它们的运行流程都是在开发人员所预料的范围之内。但是,实际却不尽人意。在程序的运行过程中可能会因为各种原因而导致出现错误,例如用户的误操作,各种环境原因等。Java为此提供了异常处理机制。通过这套机制就可以将容错率提高。本章就主要介绍Java的异常处理机制。
    12.1  异常
     Java中的异常处理是提前给出程序中有可能会出现的异常,这样就可以通过这种容错机制使程序可以继续正常运行。本小节就主要介绍异常出现的原因、异常的分类。
    12.1.1  什么是异常
    异常就是在程序运行过程中所出现的不正常现象。例如在做除法运算时,0是不能被除的,这样的事情小学的时候就知道,同样,计算机就会通过异常来将这个信息传出,以此进行说明。
    Java中的异常可以通过关键字进行控制,主要有try、catch、throw、throws和finally五个。
    try:使用在程序中有可能会出现不正常的地方,此时可以使用try将可能出现异常的代码段包围起来,如果try语句块中出现异常,那么这个异常就会被抛出。
    catch:是用来捕获异常,并在这个语句块中对该异常进行处理,例如输出说明语句等。
    finally:则是不管发生还是不发生异常,都需要执行。
    throw:用来动手引发一个异常。
    throws:定义热河被调用方法的异常。
    12.1.2  异常出现的原因
    在程序正常运行过程中,假如出现了异常,作为一个稳健的程序来说或,首先需要将程序切换到另一个安全的状态,并且需要允许用户可以进行其他的操作;其次是提示用户程序出错的原因,然后保存数据并终止程序。一个程序,至少要做到以上两点之一。
    12.1.2  异常出现的原因
    如果需要在程序中处理异常情况,就需要确切的知道异常时由何种原因造成的,一般情况下,导致异常出现有以下几种:
    1.用户输入错误:用户在需要填入数据的时候,将不符合要求的数据进行添加。例如需要输入一个整型的数据,而用户却输入了一个字符串类型的数据。此时就应当提示用户输入的格式错误,并返回界面重新输入。
    2.代码本身错误:进行数据运算时,数据的长度引起的错误,或者是数组越界、算法错误、空引用等问题
    3.环境因素:磁盘空间或者内存不足所引起的错误。
    异常的出现多种多样,在具体处理异常的时候,应该要判断异常,针对于不同的异常类型采取不同的处理措施。
    12.1.2  异常的分类
    Java中的异常体系非常庞大,所有的异常最终都是继承自Throwable接口。可以将异常分为运行时的异常和已经检查的异常。Java中主要有三种异常,也就是Throwable中的三个基本子类。
    Error:定义Java运行时的内部错误以及资源耗尽错误。表示很难恢复的错误,例如内存越界。一般不期望用户来进行处理。
    RuntimeException:用来表示设计或者实现方面的问题,例如数组越界、类型转换错误、去访问一个没有初始化的对象。在出现这个错误的时候,一般不需要处理,运行的时候,环境会输出一条信息语句,提示用户修正错误。
    其他异常:表示是运行的时候因环境因素影响可能发生并可以被处理的问题。例如查找不到文件或者是一个不完整的路径等。因为用户的错误很可能就会导致这类问题的发生。
    12.2  处理异常
    在出现异常的时候,可以直接捕获处理,也可以先不对它进行处理而是把它抛给上面的调用者。本节主要介绍try/catch捕获异常、throws声明异常、throw抛出异常、自定义异常等诸多的内容。
    12.2.1  获取异常信息
    进行异常处理的时候,可能会将抛出异常的代码放置到try块中,然后创建一个catch语句块,catch语句块中有一个异常类型和一个代表这个类型的对象引用。如果给书被抛出的异常匹配之后,catch块中的语句就会被执行。
    12.2.2  异常声明
    异常声明就是指一个方法不处理它所产生的异常,而是调用层次向上传递,谁调用的这个方法,这个异常就由谁来进行处理。
    12.2.3  抛出异常
    Throw语句用在具体方法中抛出异常,它的语法格式如下:
    throw exception;
    在以上的语句中,throw是关键字,用于抛出异常。参数exception则是表示要抛出的异常对象,该对象应该是throwable类的子类,而且只能够是一个。
    12.2.4  异常链
    两个或者是多个不同的异常出现在同一个程序中,并且会发生嵌套抛出就是异常链,异常链是一个比较抽象的概念。
    12.3  定义自己的异常
    前面介绍了一些Java本身自带的一些异常,但是在某些特定的情况下,还需要自己去创建一个异常类型,创建异常类型只需要继承Throwable类或者是它的子类Exception就可以了。本节中就主要介绍一下如何使用自己定义的异常类。
    12.3.1  创建自己的异常类
    异常的创建非常简单,只需要继承Exception,并实现一些方法就可以了。创建异常的一般形式如语法:
    class 类名 extends Exception
    {
      //类体
    }
    12.3.1  创建自己的异常类
    Throwable主要的方法如下:
    public Throwable fillInStackTrace():该方法的作用就是返回一个包含有完全堆栈追踪的Throwable对象,这个对象可以被再次抛出。
    返回包含一个完全堆栈追踪的Throwable对象,这个对象可以被再次抛出。
    public Throwable getCause():返回此throwable对象的cause;如果cause不存在或未知,则返回 null。
    public String getMessage():返回此throwable对象的详细消息字符串。
    public void printStackTrace():将异常堆栈追踪输出到标准错误流。
    public void printStackTrace(PrintStream s):将此throwable对象及其追踪输出到指定的输出流。
    public void printStackTrace(PrintWriter s):将此throwable对象及其追踪输出到指定的 PrintWriter。
    public String toString():返回一个包含异常描述的String对象。
    12.3.2  使用自己的异常类
    上一小节介绍了如何创建自己的异常类,这以小节将讲解如何使用自己创建的异常类。首先定义了一个异常类IllegalAgeException。AgeTest类则是对年龄进行分类的程序,对各个年龄段的成绩分为不同的名称。其中需要考虑的是,年龄是有范围的,一般在0-100岁之间。当然其中也有一些寿星,所以在此规定年龄超过120则认为是超出范围,则会抛出相应的异常,也就是IllegalAgeException。然后使用该异常进行处理。
    12.4  小结
    在本章中首先介绍了什么是异常,介绍了Java异常机制的基本体系结构。然后又介绍了Java中异常机制的使用,又对自定义异常类进行了简单讲解。正确的处理各类异常是非常复杂的事情,读者应该在程序编写过程中细细体会才能熟练的掌握,本章只是对Java异常机制的简单介绍,还希望读者能在实践中学习,加深对Java异常机制的认识。

  • 相关阅读:
    Atitit.随时间变色特效 ---包厢管理系统的规划
    Atitit.request http乱码的设计防止 检测与解决最近实践p825 attilax总结.doc
    Atitit.request http乱码的设计防止 检测与解决最近实践p825 attilax总结.doc
    atitit.薄伽梵歌overview  attilax 读后感
    Atitit。 《吠陀》 《梨俱吠陀》overview 经读后感  是印度上古时期一些文献的总称
    Atitit。 《吠陀》 《梨俱吠陀》overview 经读后感  是印度上古时期一些文献的总称
    atitit.薄伽梵歌overview  attilax 读后感
    Atitit 《摩奴法典》overivew 读后感 不是由国王 颁布的,而是 僧侣编制
    Atitit 《摩奴法典》overivew 读后感 不是由国王 颁布的,而是 僧侣编制
    Atitit.执行cli cmd的原理与调试
  • 原文地址:https://www.cnblogs.com/yoogoo/p/2467272.html
Copyright © 2011-2022 走看看