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

java基础 Java异常总结

2013-09-03 01:37 169 查看
Exception(异常):运行时的概念。

1,Throwable:运行时可能碰到的任何问题的总称;

1)Error:指非常严重的错误,系统不要求程序员处理,也处理不了。如:硬件坏了.....等。

2)Exception:从代码的角度是程序员可以处理的问题;

UncheckedException(RuntimeException的子类) (未检查异常)如果是RuntimeException(或子类)就是为检查异常,其他就是已检查异常

程序员小心谨慎完全可以避免的异常,系统不要求程序员处理(可以不管,运行会提示错误),

如:3/0 数组下标越界。

CheckedExcepiton (已检查异常)

系统要求必须处理异常。

2,异常处理:异常是相对于方法来说的

1)声明抛出异常(消极的处理)

throws(抛弃):写在方法名的定义上,后面跟要抛弃的异常类型。

如:public void m1() throws Exception{.}

异常产生时,责任可能并不在当前方法,向外抛弃(把异常抛弃,留给调用者处理)可以让异常找到一个最佳的位置处理

抛弃过程中可以对异常类型进行扩展,但是不能缩小。

throw(抛出):一般出现在方法实现里,用来抛出异常对象(或者是产生异常),

如:throw new FileNotFoundException();

当代码出现异常时,代码不会向下执行,JVM会将异常封装成相应的异常类的对象,

然后向外抛出。之后这个方法里剩下的代码就不会再执行了。

对于一个方法的返回值:

1)正常运行时,要求方法必须返回定义的类型的值。

2)如果运行不正常(出现异常),方法返回的是异常对象

方法覆盖:名相同,参数相同,返回类型相同,访问权限不能更小,子类抛弃的异常不能比父类更多。

2)try....catch(积极的处理):

一个try语句后可以跟多个catch语句;catch时异常子类放上面,异常父类放下面。

如果没有父子关系,先后无所谓;

---方法---( ){

try{

//可能会出现异常的代码

xxxxxxxxxx; (1)

xxxxxxxxxx; (2)

}catch(Exception1 e1){

//当try代码块出现异常时,执行catch代码块。

xxxxxxxxx; (3)

}catch(Exception2 e2){

xxxxxxxxx; (4)

}finally{

//不管有没有异常出现都要执行的代码。

xxxxxxxxx; (5)

}

xxxxxxxxx; (6)

}

1)如果(1),(2)没产生异常,(2)执行后直接执行(5),然后执行(6)。

2)如果(1)产生异常,(2)不会被执行,直接跑出try{..},匹配catch,和catch里定义的类型一致,

执行catch完了后,直接跳到(5)执行,最后再执行(6),如果异常类型都不一致,将导至语法问题。

3)自定义异常类型(业务异常):

如:class MyException extends Exception{

publicMyException(String str);

super(str);

}

Exception异常总结:

1、如果程序用了System.exit(0);则不会执行finally里的程序

2、在程序return前执行finally里的程序

3、Java中异常分为两类:

1) checked Exception

处理方式一、继续抛出,消极做法,直到抛出到JVM

处理方式二、用try..catch

2) unchecked Exception (runtime exception)

throws ArithmeticException,IOException应该是出现这两种异常就向上抛吧。

什么情况下一个方法抛出几个异常?一般来说应该是会抛出几种异常,然后在一级调用这个方法时处理一下。

如果没有特殊需要的话要把可能出现的异常都截获并处理。

try{

method();

}catch(exception1 e1){

do something;

}catch(exception2 e2){

do something;

}……

e1的范围小于e2.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: