zoukankan      html  css  js  c++  java
  • Thinking in java(六)

    1.Throwable
    a) 异常体系:
    i. Error错误
    ii. Exception异常
    1. 编译时异常Exception
    2. 运行时异常RuntimeException(Exception特殊子类):RuntimeException
    如果在函数中抛出的RuntimeException,这时这种异常在编译的时候,编译器不会处理。只有运行代码的时候,如果真的发生了,这时程序就会因为这个异常而停止运行。
    b) 总结:对于RuntimeException运行时异常,不需要捕获和声明。
    为什么抛出RuntimeException异常,不需要捕获和声明呢?(声明和捕获没有什么影响),运行时异常就是为了让程序停止,让我们看到并且修正;
    c)
    RuntimeException和Exception有什么区别:
    Exception属于编译时异常,编译器在编译时会检测该异常是否异常的处理方案
    RuntimeException属于运行时异常,编译器不会检测该异常是否有异常的处理方案,不需要声明。
    说明:在Exception的所有子类异常中,只有RuntimeException不是编译异常,是运行时异常,其他子类都是编译异常。

    2.异常的声明和捕获
    a) 注意:在开发中,main函数中不会出现声明,在main函数通常是使用捕获。(但是main函数是可以声明的)
    b) Throw和throws的区别:
    throw:(抛出异常)
    throw书写在函数内,当在函数中有异常的时候,这个异常需要抛出,这时我们可以在函数中使用throw关键字把这个异常抛出。
    throws:(声明异常)
    throws是书写在函数上,当函数中有编译时期的异常时,我们同时又需要把这个异常告诉给函数的调用者,这时可以在函数上使用throws关键字声明函数中的异常。
    c)异常的代码块:
    1)try-catch代码块

    try{
    可能发生异常的代码
    }catch( 异常类名  变量名 ){
    处理异常的代码。
    }

    2)try-catch-catch代码块
    当try代码块中可能有多个异常的时候,针对每个异常,需要分别进行捕获

    try{
    可能发生异常的代码
    }catch( 异常类名  变量名 ){
        //处理
    }catch( 异常类名  变量名 ){
        //处理
    }
    ......

    多catch分别捕获异常的时候,最上面的catch应该捕获的是子类的那个异常,最后的一个catch,一定捕获的需要捕获的异常的最后那个父类。

    3.自定义的异常
    自定义异常类是建立在java提供的异常类基础之上(必须继承java中的异常类)。也就是说我们自己定义的类要是异常类的话,要求我们的自己定义的类也必须是Throwable下的一个子类。
    如果自己定义的异常,需要编译器在编译的时候检测,这时就继承Exception,如果编译的时候不需要检测,这时就继承RuntimeException。

    4.异常在继承时
    继承中的函数复写异常细节:
    1、子类复写父类的函数,要求函数的返回值类型,函数名,参数列表必须一致;
    2、子类复写父类的函数,子类中函数访问权限大于等于父类中函数的访问权限;
    3、不能修改访问方式;
    4、子类复写父类的函数时,如果父类的函数上没有声明异常,子类复写的时候,也不能声明异常

  • 相关阅读:
    XJOI网上同步训练DAY2 T2
    XJOI网上同步训练DAY2 T1
    BZOJ 2661 连连看
    HDU 4411 Arrest
    BZOJ 2324 营救皮卡丘
    BZOJ 1927 星际竞速
    BZOJ 3550 Vacation
    XJOI网上同步训练DAY1 T3
    php 类的相互访问
    ThinkPhp5.0_文件上传
  • 原文地址:https://www.cnblogs.com/DiZhang/p/12545077.html
Copyright © 2011-2022 走看看