JAVA,异常

异常概念

通常大家认为异常就是错误。

但这个错误有很多种:

1.语法错误

2.JVM虚拟机错误

3.平台错误

4.程序运行错误(平台或者资源或者逻辑,数值等错误)

常见的异常

1. java.lang.NullPointerException 空指针

2. java.lang.ArrayIndexOutOfBoundsExcetion 下标越界,只要有IndexOutOfBounds就是下标越界有关

3. java.lang.ArithmeticException 除数不能为零

4. java.lang.ClassCastException 类型转换异常

5. java.lang.NimberFormatException 数字格式化异常

6. java.lang.NoSuchMethodError 调用的方法不存在

7. java.lang.NoSuchMethodException 方法不存在(反射机制)

8 .java.lang.NoSuchFieldError  JVM虚拟机出现属性找不到异常

9. java.lang.NosuchFieldException 反射机制中出现属性找不到异常

10.java.lang.NoClassDefFoundError jvm虚拟机运行代码时找不到class类文件

11.java.lang.ClassNoFoundException Class.forName , 这个方法报错的话,查看一下是否缺少文件

12.java.lang.OutOfMemoryError 虚拟机内存不够,需要扩大

13.java.lang.ClassFormatError 类格式错误 看看jdk版本是否有误。

异常捕获处理

try{

    代码

}catch( 异常类型 ){

    处理代码

} catch( 异常类型 ){

    处理代码

}

try里面代码出现异常马上就跳到catch陷阱,但是也要类型匹配才行,要不不然不能跳进去,如果跳不进去又会向外抛.

Try catch 可以嵌套,但是需要注意的时,如果嵌套在try里面,如果嵌套的异常处理不了它可以调到外面的try catch去处理。但如何嵌套在catch异常处理代码中,那样如果嵌套的异常处理不了是不可以调到外面的cry catch中的,只能直接报异常了、

通用陷阱


从上图可看出,异常Throwable是祖先类,下来是延伸细分,Exception(程序代码异常类)Error(JVM虚拟机异常类)

Exception(程序代码异常类)下面还分出一个RuntimeException

所以Throwable是最通用的异常,它可以接收全部异常类型,Exception可以接收程序代码全部异常。Error可以接收JVM虚拟机跑出的全部异常。下来就到详细的一一细分的异常类型。

建议:通用陷阱一般不要挖,错误报的越仔细越好。或者通用异常陷阱,要写在最后一个catch后面,这样就会先判断全面的catch,再往后面判断。

注意:catch 里必须写输出代码,要不然没有任何提示,就不知道有没有出现异常了。要么System.out.println  要么printStackTrace

finally 关键字

终极执行块,无论有没有出现异常,都会执行里面的代码。

try{

    代码

}catch( 异常类型 ){

    处理代码

}finally{

    必执行代码

}

try里发生异常,执行了fianlly代码,如果finally也有异常抛出,这样就会覆盖之前抛出的异常(报新不报旧)


自定义异常

1.throw关键字:抛出异常

2.throws关键字:在方法声明抛出的异常throws后面可以挂很多异常类来提醒程序员可能有一次抛出。方法中可以不写catch陷阱,直接将错误向抛。

RuntimeException 以下的所有异常类(包括自己),都不需要强制书写try catch或者方法声明抛出

自定义异常该继承那个类?

1.如果错误很严重,必须提醒的那你就需要继承 Exception,必须写 try catch 或者 throws

2.如果错误不严重,而且这种错误经验足了慢慢就避免,你就继承RuntimeException 不强制要求你写 try catch 或者 throws

注意:自定义异常的类名越详细越好   

例如:TuiXueQuanXianXiuGaiException

猜你喜欢

转载自blog.csdn.net/qq_40550973/article/details/80556765