Java中的异常处理
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中的异常处理相关的知识,希望对你有一定的参考价值。
在Java的库中声明了许多异常类,每个异常类都代表一种运行错误,在每个异常类中都包含该运行错误的信息和解决错误的方法。Java中对异常的处理方法有两种:一是不处理该异常,将其抛给调用方法,若所有方法都跑出异常,则由Java虚拟机捕获,终止程序并输出错误信息;二是捕获该异常并处理。
一.异常与错误的区别
错误是致命性的,程序无法处理。Error类是所有错误类的超类。
异常是非致命性的,可以通过程序捕获处理。Exception类为所有异常类的超类。
异常分为如下两类:
1.非检查性异常:不期望程序捕获的异常,在方法中不需要声明,编译器也不进行检查。继承自RuntimeException,可能会在代码块中经常出现。
2.检查性异常:调用者必须要捕获或者声明抛出的异常。编译器需要进行检查。
二.预定义的异常类型
1.
2.NullPointerException:访问对象还没有实例化
3.NegativeArraySizeException:创建数组时元素个数为负
4.ArrayIndexOutOfBoundsException:访问数组元素时,数组下标越界。
以上为非检查性异常,以下为检查型异常
5.ArrayStoreException:程序试图向数组中存取错误类型的数据
6.FileNotFoundException:试图存取一个不存在的文件
三.异常的捕获
Java中使用try{}catch{}语句捕获异常,其基本语法为:
try{ statements(s)//可能会产生异常的代码块 }catch(exceptiontype name){ statements(s)//异常处理语句:常用getMessage()-返回一个字符串,对发生的异常进行描述 // printStackTrace()-给出方法的调用序列,一直到异常的产生位置 }finally{ statements(s)//释放内存以外的资源,无论是否产生异常都会运行 }
其中若有多个catch语句并列,则一般的异常(如超类)需要放到后面,特殊的异常(如子类)需要放到前面。
四.异常的生成
异常对象必须是Throwable或其子类的实例,异常的生成一共有三种方式:
1.由Java虚拟机生成;
2.由Java类库中的某些类生成;
3.自己写的程序中自定义生成,必须是Exception的子类;
声明语法如下:
public class MyExceptionName extends SuperclassOfMyException{ public MyExceptionName(){ super("Some string explaining the exception"); } }
以上是关于Java中的异常处理的主要内容,如果未能解决你的问题,请参考以下文章
java.util.MissingResourceException: Can't find bundle for base name init, locale zh_CN问题的处理(代码片段