JAVA中的异常

异常

异常是程序中的错误,但并非全部的错误都是异常,而且错误有时候是能够避免的java

1.异常的分类

检查时异常|编译时异常:编译期间出现的异常.其中最具表明的检查性异常是用户错误或者问题引发的异常.若是不作处理,程序就没法继续向下执行数组

运行时异常:出如今程序运行期间,能够经过程序的健壮性处理spa

2.Exception的层次

java.lang.Exception类是全部异常类的父类指针

而Exception是Throwable类的子类,其中Throwable的子类还有一个Error,但Error通常有虚拟机生成并脱出,程序不关注code

3.java中的异常

java定义了一些异常类在java.lang标准包中.orm

标准运行时异常类的子类是最多见的异常类.因为java.lang包是默认加载到全部java程序中对象

下面列出一些java中的运行时异常继承

  • ArithmeticException

出现异常的运算条件时,抛出该异常.例如(1/0)接口

  • ArrayIndexOutOfBoundsException

数组下标越界异常,数组下标为负或者大小超出数组大小是抛出字符串

  • ClassCastException

类型转换问题

试图把对象强制转换为不是实例的子类时,抛出该异常

  • NegativeArraySizeException

试图建立大小为负的数组是抛出该异常

  • NullPointerException

空指针异常 当引用指向为空时抛出该异常

  • NumberFormatException

试图将字符串转换成一种数值类型,可是该字符串不能转换为适当格式时,抛出该异常

下面列出一些java中检查时异常

  • ClassNotFoundException

应用程序试图加载类时,找不到相应的类,抛出异常

  • InstantiationException

当试图使用Class类中的newInstance方法建立一个类的实例,而指定的类对象由于是一个接口或者是一个抽象类而没法实例化时,抛出这个异常

4.异常处理

a.关键字

throw:制造异常

throws:抛出异常,一个方法能够抛出多个异常,多个异常之间之间使用逗号分开

try...catch:捕获异常

try...catch使用:

try{
    可能会出现异常的代码
}catch(FileNotFoundException e){
    若是出现这个异常会执行的代码;
    //打印异常的栈信息,标红色的 //打印异常信息
    e.printStackTrace();
}catch(NullPointerExcepti e){
    若是出现这个异常会执行的代码;
}....
    finally{
        不管是否出现异常,都会执行finally中的代码
    }
复制代码

try ,catch,finally块之间不能添加任何代码

一旦try中出现异常了,try后面的代码就都不会执行

一个try后面能够跟一个或者多个catch

若是有多个catch,那么大范围的异常须要排在后面

5.声明自定义异常

在java中能够自定义须要的异常.但须要注意如下几点

  • 全部异常都必须是Throwable的子类
  • 若是但愿写一个检查性异常,则须要继承Exception类,只继承Exeption类建立的异常类是检查时异常
  • 若是你想写一个运行时异常类,那么须要继承RuntimeException类

例子

class NameNullException extends RuntimeException 复制代码
相关文章
相关标签/搜索