可控式异常和运行时异常

在java中可以捕获的异常(Exception 类的子类) 分为可控式异常和运行时异常两种类型

可控式异常就是checkedExpection   运行时异常就是runtineException

可控式异常捕获   运行时   不用  编译时看不出运行时报错

  1. 可控式异常:在java中把那些可以预知的错误,例如从文件中读取数据,对数据库进行操作等,在程序编译时就能对程序中可能存在的错误进行处理,并给出具体的错误信息,我们把这些错误称为可控式异常

         例如:IOException 当发生某种I/O(输入/输出流)异常时,抛出此异常;SQLException 提供关于数据库访问错误或其他错误信息的异常;ClassNotFoundException  类没有找到异常;NoSuchFieldException 类不包含指定名称的字段时产生的信号(没有找到文件);NoSuchMethodException 无法找到某一特定方法时,抛出该异常

       2.运行时异常:在java中有些错误是不能被编译器检测到的,例如,在进行触发运算时,除数为零;试图把一个不是由数字组成的字符串使用Integer 的parseInt() 方法转化为整数等 java的编译器是检测不到的,因而能正常编译,但是在运行时就会发生异常,我们把这些异常称为运行时异常。

       例如:IndexOutOfBoundsException 指示某集合或数组的索引值超出范围时抛出该异常(数组越界);NullPointerException 当应用程序试图在需要对象的地方使用null时,抛出该异常(空指针异常);ArithmeticException  当出现异常的运算条件时,抛出此异常;illegalArgumentException  抛出的异常表明向方法传递了一个不合法或者不正确的参数(参数异常);ClassCastException 当试图将对象强制转换为不是实例的子类时抛出该异常(类  转换异常)

获取异常信息:

                         String getLocalizedMessage()  获得此Throwable 的本地化描述;String getMessage() 获得此Throwable 的详细消息字符串;void printStackTrace() 将此Throwable 及其栈踪迹输出至标准错误流 ;String toString()  获得此Throwable 的简短描述

抛出异常:throws: throws 通常用于方法声明,当方法中可能存在异常,却不想在方法中对异常进行处理时,就可以在声明方法时使用throws声明抛出异常,然后在调用该方法的其他方法中对异常,如果需要使用throws声明抛出多个异常,各异常之间要用逗号分隔。

                   throw:在通常情况下,程序发生错误时系统会自动抛出异常,而有时希望程序自行抛出异常,可以使用throw语句抛出的是异常类的实例 例如:throw new Exception('xxxx');

       自定义异常:创建自定义的异常类需要继承自Exception类,并提供含有一个String类型形参的构造方法,该形参就是异常的描述信息,可以通过getMessage()方法获得。

异常的使用原则:1.不要过多的使用异常,这样会增加系统的负担   2.在方法中使用try...catch 语句块捕获异常时,要对异常做出处理  3. try ..catch 语句块范围不要太大,这样不利于对异常的分析 4.一个方法被覆盖时,覆盖他的方法必须抛出相同的异常或子异常

猜你喜欢

转载自blog.csdn.net/qq_42384510/article/details/81323511