您的位置:首页 > 编程语言 > Java开发

java 异常处理

2016-07-27 14:55 411 查看
一.异常发生的原因:

1.用户输入非法数据。

2.要打开不存在的文件。

3.网络通信时连接中断,或者JVM内存溢出。

二。异常类型:

1.检查性异常。

2.运行时异常。

3.错误。

三。捕获异常(try/catch)

语法:

try
{
// 程序代码
}catch(ExceptionName e1)
{
//Catch 块
}

实例:越界访问数组时:
try {
int[] intArr = new int[2];
System.out.println("Access element three:"+intArr[3]);
}catch (ArrayIndexOutOfBoundsException e){
System.out.println("Exception thrown :"+e);
}
System.out.println("Out of the Block");

结果:
Exception thrown :java.lang.ArrayIndexOutOfBoundsException: length=2; index=3
Out of the Block

四。多重捕获块。
语法:

try{
// 程序代码
}catch(异常类型1 异常的变量名1){
// 程序代码
}catch(异常类型2 异常的变量名2){
// 程序代码
}catch(异常类型2 异常的变量名2){
// 程序代码
}
当代码发生异常时,异常会抛给第一个catch块。如果异常类型不匹配,则异常会抛给第二个catch块,以此类推,直到异常被捕获或者通过所有catch块。

五。throw/throws关键字。

一个方法如果没有捕获一个检查性异常,那么该方法必须使用throws关键字来声明。throws放在方法签名的尾部。

一个方法可以声明抛出多个异常,多个异常之间用逗号隔开。

六。finally关键字。

用于创建在try代码块后面执行的代码块。

无论是否发生异常,finally代码块中的代码都会被执行。

语法:

try{
// 程序代码
}catch(异常类型1 异常的变量名1){
// 程序代码
}catch(异常类型2 异常的变量名2){
// 程序代码
}finally{
// 程序代码
}

* catch不能独立于try存在。
* finally代码块是可选的。

* try代码块后不能既没catch也没finally。

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

七。自定义异常:

1.所有异常都是Throwable的子类。

2.检查性异常继承于Exception类。

3.运行时异常继承于RuntimeException类。

例如:

class MyException extends Exception{
}

八。通用异常
在java中定义了两种类型的异常和错误。

* JVM(Java虚拟机)异常:由JVM抛出的异常或错误。例如:NullPointerException类,ArrayIndexOutOfBouncesException类,ClassCastException类。

* 程序级异常:由程序或者API程序抛出的异常。例如:LlegalArgumentExcetion类,LllegalStateException类。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: