-
java中有哪些RunTimeException异常
- RuntimeException 是那些可能在Java虚拟机正常运行期间抛出的异常的超类,是所有运行时异常的顶级接口。
- NullPointerException 当应用程序试图访问空对象时,则抛出该异常。
- IndexOutOfBoundsException 指示某排序索引(例如对数组、字符串或向量的排序)超出范围时抛出。
- NumberFormatException 当应用程序试图将字符串转换成一种数值类型,但该字符串不能转换为适当格式时,抛出该异常。
- ClassCastException 当试图将对象强制转换为不是实例的子类时,抛出该异常。
- ArrayStoreException 试图将错误类型的对象存储到一个对象数组时抛出的异常。
- IllegalArgumentException 抛出的异常表明向方法传递了一个不合法或不正确的参数。
- FileNotFoundException 当试图打开指定路径名表示的文件失败时,抛出此异常。
- ArithmeticException 当出现异常的运算条件时,抛出此异常。例如,一个整数“除以零”时,抛出此类的一个实例。
- IOException 当发生某种I/O异常时,抛出此异常。此类是失败或中断的I/O操作生成的异常的通用类。
- SQLException 提供关于数据库访问错误或其他错误信息的异常。
- InterruptException 线程终端异常
-
try、catch、finally三个语句块应注意的问题
- try、catch、finally三个语句块均不能单独使用,三者可以组成 try...catch...finally、try...catch、try...finally三种结构,catch语句可以有一个或多个,finally语句最多一个。
- try、catch、finally三个代码块中变量的作用域为代码块内部,分别独立而不能相互访问。如果要在三个块中都可以访问,则需要将变量定义到这些块的外面。
- 多个catch块时候,最多只会匹配其中一个异常类且只会执行该catch块代码,而不会再执行其它的catch块,且匹配catch语句的顺序为从上到下,也可能所有的catch都没执行。
- 先catch子类异常再catch父类异常。
-
try、catch、finally三个关键字的作用是什么?
- try:它里面放置可能引发异常的代码,如果代码运行出现了错误,那么执行catch,但不能影响方法调用者的正常运行;
- catch:捕获异常,放程序出现错误后执行的代码块。可以放程序出错后的处理措施;
- finally主要有一下三个作用:
- 无论try块是否完整执行,是否执行了catch块,finally块里面的代码都会执行
- 为异常处理程序提供统一出口,在当前流程逻辑跳转到其它程序之前,能对程序的状态统一管理
- 出现异常时释放资源,可以将释放资源的代码放到finally块中,比如文件资源关闭,数据库链接释放,io流的关闭
-
throw和throws的作用分别是什么?