Java中的异常处理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中的异常处理相关的知识,希望对你有一定的参考价值。

  在Java的库中声明了许多异常类,每个异常类都代表一种运行错误,在每个异常类中都包含该运行错误的信息和解决错误的方法。Java中对异常的处理方法有两种:一是不处理该异常,将其抛给调用方法,若所有方法都跑出异常,则由Java虚拟机捕获,终止程序并输出错误信息;二是捕获该异常并处理。

 

一.异常与错误的区别

  错误是致命性的,程序无法处理。Error类是所有错误类的超类。

  异常是非致命性的,可以通过程序捕获处理。Exception类为所有异常类的超类。

  异常分为如下两类:

1.非检查性异常:不期望程序捕获的异常,在方法中不需要声明,编译器也不进行检查。继承自RuntimeException,可能会在代码块中经常出现。

2.检查性异常:调用者必须要捕获或者声明抛出的异常。编译器需要进行检查。

 

二.预定义的异常类型

1.ArithmeticException:整数除法中除数为0

2.NullPointerException:访问对象还没有实例化

3.NegativeArraySizeException:创建数组时元素个数为负

4.ArrayIndexOutOfBoundsException:访问数组元素时,数组下标越界。

以上为非检查性异常,以下为检查型异常

5.ArrayStoreException:程序试图向数组中存取错误类型的数据

6.FileNotFoundException:试图存取一个不存在的文件

7.IOException:通常的I/O错误

 

三.异常的捕获

  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异常处理机制

java 反射代码片段

片段中的 EditText 上的空指针异常 [重复]

java.util.MissingResourceException: Can't find bundle for base name init, locale zh_CN问题的处理(代码片段

java中的异常处理---捕获异常或者抛出异常

java中的异常处理---捕获异常或者抛出异常