• java基础之异常。


    异常:

    (1)异常:异常就是Java程序在运行过程中出现的错误。
    异常由来:问题也是现实生活中一个具体事务,也可以通过java 的类的形式进行描述,并封装成对象。其实就是Java对不正常情况进行描述后的对象体现。

    (2)异常的体系
            Throwable
                |--Error    严重问题,我们不处理。
                |--Exception
                    |--RuntimeException    运行期异常,我们需要修正代码
                    |--非RuntimeException 编译期异常,必须处理的,否则程序编译不通过

    (3)异常的处理:
            A:JVM的默认处理
                把异常的名称,原因,位置等信息输出在控制台,但是呢程序不能继续执行了。
            B:自己处理
                a:try...catch...finally
                    自己编写处理代码,后面的程序可以继续执行
                b:throws

                    把自己处理不了的,在方法上声明,告诉调用者,这里有问题

    (4)编译时异常和运行时异常的区别?
    Java中的异常被分为两大类:编译时异常和运行时异常。所有的RuntimeException类及其子类的实例被称为运行时异常,其他的异常就是编译时异常
    编译时异常
    Java程序必须显示处理,否则程序就会发生错误,无法通过编译
    运行时异常
    无需显示处理,也可以和编译时异常一样处理
    (5)hrowable中的方法
    getMessage()
    获取异常信息,返回字符串。
    printStackTrace()
    获取异常类名和异常信息,以及异常出现在程序中的位置。返回值void。
    (6)throws和throw的区别?

    throws:
    用在方法声明后面,跟的是异常类名
    可以跟多个异常类名,用逗号隔开
    表示抛出异常,由该方法的调用者来处理
    throws表示出现异常的一种可能性,并不一定会发生这些异常
    throw:
    用在方法体内,跟的是异常对象名
    只能抛出一个异常对象名
    表示抛出异常,由方法体内的语句处理
    throw则是抛出了异常,执行throw则一定抛出了某种异常 
    (7)finally的特点?
    被finally控制的语句体一定会执行
    特殊情况:在执行到finally之前jvm退出了(比如System.exit(0))被finally控制的语句体一定会执行
    finally的作用
    用于释放资源,在IO流操作和数据库操作中会见到
    (8)自定义异常
    继承自Exception
    继承自RuntimeException
    自定义异常类
    基本语法
    public  class 异常类名 extends Exception{
            public 异常类名(String msg){
                super(msg);
         }
     }
    自定义异常类中往往不写其他方法,只重载需要使用的构造方法

    (9)子类重写父类方法时,子类的方法必须抛出相同的异常或父类异常的子类。(父亲坏了,儿子不能比父亲更坏)
    如果父类抛出了多个异常,子类重写父类时,只能抛出相同的异常或者是他的子集,子类不能抛出父类没有的异常
    如果被重写的方法没有异常抛出,那么子类的方法绝对不可以抛出异常,如果子类方法内有异常发生,那么子类只能try,

    不能throws。





  • 相关阅读:
    OpenJDK源码研究笔记(十二):JDBC中的元数据,数据库元数据(DatabaseMetaData),参数元数据(ParameterMetaData),结果集元数据(ResultSetMetaDa
    Java实现 LeetCode 257 二叉树的所有路径
    Java实现 LeetCode 257 二叉树的所有路径
    Java实现 LeetCode 257 二叉树的所有路径
    Java实现 LeetCode 242 有效的字母异位词
    Java实现 LeetCode 242 有效的字母异位词
    Java实现 LeetCode 242 有效的字母异位词
    Java实现 LeetCode 241 为运算表达式设计优先级
    Java实现 LeetCode 241 为运算表达式设计优先级
    Java实现 LeetCode 241 为运算表达式设计优先级
  • 原文地址:https://www.cnblogs.com/jatpeo/p/11767585.html
Copyright © 2020-2023  润新知