ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

第十二章、异常

2020-12-11 13:32:06  阅读:149  来源: 互联网

标签:Exception 自定义 抛出 第十二章 子类 异常 throw


第十二章、异常

1. 异常的概述

异常就是不正常的意思,Java语言中主要指程序在运行阶段产生的错误。
  	Throwable(可抛出的,可扔出的)
 	java.lang.Throwable类时Java程序所有错误或异常的超类
主要有两个子类:
    Error:
      Error主要描述比较严重的错误,无法通过编程来解决的重大的错误。
    Exception:
      Exception主要描述比较轻量级的错误,可以通过编程来解决的。

2. Exception类的主要分类

RuntimeException - 运行时异常,也叫作非检测性异常类
    - 作非检测性异常类就是指编译阶段无法被编译器检测出来的异常。
  IOException和其他异常类 - 其他异常类,也叫做非检测性异常类。
RuntimeException类的主要子类有:
     ArithmeticException - 算数异常类
     ArrayIndexOutOfBoundsException(间接子类) - 数组下标越界异常
     NullPointerException - 空指针异常
     ClassCastException - 类型转换异常
     NumberFormatException(间接子类) - 数字格式异常
注意:
    当程序的执行过程中产生异常,若没有手动进行处理 则有java虚拟机采用默认的方法是处理,默认方式就是打印异常名称、异常原因以及异常发生的位置并终止程序,后续的代码无法被执行。

3. 运行时异常的处理方式

对于绝大数运行时异常来说,都可以通过条件判断来避免异常的发送。

4. 异常的捕获

(1)语法格式
    try{
      可能产生异常对象的语句块。
    }catch(异常类型 引用名){
      针对当前异常类型对象的处理语句块;
    }
    ...... (可以写多个catch)
    finally{
      无论是否发生异常都应该执行的语句块。
    }
(2)注意事项
    当捕获异常的结构中有多个catch分支时,切记小范围的异常类型放在大范围的异常类型上面
    懒人的写法:
      catch(Exception e){......}

(3)执行流程
    try{
      a;
      b;可能产生异常的语句
      c;
    
    }catch(Exception e){
      e;
    }finally{
      f;
    }
    当没有产生异常的时候,程序的执行流程时:a b c f
    当产生异常时,程序执行流程是 a b e f

5. 异常的抛出

(1)基本概念
        在某些特殊的场合中,当产生异常后却无法直接处理的/不想处理时,此时就可以将异常转移给当前方法的调用着,这就叫异常的抛出。
(2)语法格式
        返回值类型    方法名称(形参列表) throws 异常类型{...............}
(3)方法重写的原则
        a.要求方法名相同、参数列表相同、返回值类型也相同,从jdk1.5开始允许返回子类类型。
        b.访问权限不能变小,可以相同或者变大。
        c.不能抛出更大的异常
注意:
	子类中重写以后的方法可以选择抛出与父类一样的异常、更小的异常、不抛出异常,但是不能抛出更大的异常、不同的异常。

6. 自定义异常

(1)自定义异常的由来
        java官方库中虽然提供了大量的异常类,但不足以描述现实生活中所有的异常情况,当出现官方库中没有描述
        的异常情况时候就需要程序员自定义异常类加以描述,使得异常信息更加具备针对性和可读性。
(2)自定义异常的流程
   a.自定义类继承Exception类或者Exception类的子类
   b.提供两个版本的构造方法,一个是无参构造方法,另一个是字符串做参数的构造方法

7. 异常对象的抛出

throw new 异常类型()
 例如:throw new Exception()

8. throw和throws的区别

throws
	用在方法声明后面,跟的是异常类名
	可以跟多个异常类名,用逗号隔开
	表示抛出异常,由该方法的调用者来处理
	throws表示出现异常的一种可能性,并不一定会发生这些异常
throw
    用在方法体内,跟的是异常对象名
    只能抛出一个异常对象名
    表示抛出异常,由方法体内的语句处理
    throw则是抛出了异常,执行throw则一定抛出了某种异常 

9. 练习

写一个Person类,同事定义AgeException,当年龄输入不合法时候,抛出异常。

标签:Exception,自定义,抛出,第十二章,子类,异常,throw
来源: https://www.cnblogs.com/borntodie/p/14119902.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有