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

java异常处理的学习笔记

2016-04-01 20:33 459 查看
程序在执行时,如果异常没有处理,程序就会被迫终止,异常处理能使程序可以处理预期之外的结果,使程序能顺利运行。

异常可大致分为三种:系统错误、异常、运行时异常。

系统错误用Error类表示,Error描述的是内部系统错误,而这种错误一般很少发生,但一旦发生,除了通知用户以及尽量委稳妥的关闭程序外,基本没什么能做的;

异常用Exception类表示,Exception描述的是有程序和外部环境所引起的错误,这些异常能被捕获和处理,例如引用一个不存在的类,打开一个不存在的文件等;

运行时异常用RuntimeException,RuntimeException描述的是程序的设计错误,例如除数为0,数据类型错误,数组越界等。

处理异常通常有三个操作:声明(由throws引导),抛出(由throw引导),捕获(由catch引导)一个异常。

声明异常:每个方法都必须声明他可能抛出的必捡异常的类型,这称为声明异常,每个方法都可能发生异常,但免检异常是不需要声明的,而必检则必须在方法头声明

eg:

public void Method() throw Exception1,Exception2,Exception3....,ExceptionN;

抛出异常:检测到错误的程序的可以创建一个合适的异常类型的实例并抛出它,这就称为抛出一个异常

eg:

throw new ArithmeticException("Wrong Argument"):

捕获异常:在抛出一个异常后,我们可以用try-catch语句捕获和处理它,在try语句中每抛出一个异常,程序就会跳过try中后面的语句,然后开始查找处理这个异常的代码的过程,这个过程称为异常处理器;找到一个异常后直接查找处理异常的方法,从第一个catch查到最后一个catch,查到就执行,若没有catch能捕获这个异常,程序将停止。

eg;

try{
statements;
}
catch(Exception1 ex1){
handler for exception1;
}
catch(Exception2 ex2){
handler for exception2;
}
......
catch(ExceptionN exN){
handler for exceptionN;
}

一个通用的异常可以派生出各种异常类,如果一个异常能被父类catch捕获,那他就能被他的子类catch捕获,故catch块中捕获异常是有顺序的,如果父类的catch块是放在子类catch块前面的,将出现编译错误。

从JDK7开始能使用新的多捕获特征来简化代码,eg:

catch(Exception1 | EXception2 | Exception3 ......| ExceptionN){

}

在java.lang.Throwable类中提供了一些方法能显示异常的信息,eg:

getMessage():放回描述给异常对象的信息,例如如果除数为0,则返回/ by zero

toString():返回三个字符串的链接:异常类的全名 + ": " + getMessage()方法

printStackTrace():在控制台上打印Throwable对象和它的调用堆栈(内存,即c语言中地址)信息
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: