---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------
1,异常体系的根类是:Throwable
Throwable:
|--Error:重大的问题,我们处理不了。也不需要编写代码处理。比如说内存溢出。
|--Exception:一般性的错误,是需要我们编写代码进行处理的。
|--RuntimeException:运行时异常,这个我们也不需要处理。
其实就是为了让他在运行时出问题,然后我们回来修改代码。
2, 异常有两种:
编译时被检测异常:
该异常在编译时,如果没有处理(没有抛也没有try),编译失败。
该异常被标识,代表这可以被处理。
运行时异常(编译时不检测)
在编译时,不需要处理,编译器不检查。
该异常的发生,建议不处理,让程序停止。需要对代码进行修正。
3,异常体系的特点:
异常体系中的所有类及其子类对象都具备可抛性。也就是说可以被throw和throws关键字所操作。
4,在main里面编写代码进行处理,交给jvm自己进行处理,采用的是jvm的默认处理方式。相当于调用了异常对象的printStackTrace()方法。
5,Throwable类:
getMessage():获取异常信息,返回字符串。
toString():获取异常类名和异常信息,返回字符串。
printStackTrace():获取异常类名和异常信息,以及异常出现在程序中的位置。返回值void。
6,异常的处理·
try...catch...finally
基本格式:
try {
可能出现异常的代码
} catch(异常对象) {
异常处理代码
} finally {
释放资源
}
变形格式:
try...catch
try...catch...catch...//当有多个异常时最大的异常要放在最后。
try...catch...catch...finally
7,多个异常同时被捕获的时候,原则: 先小的,后大的。
finally:永远被执行,除非退出jvm。System.exit(0);它其中的代码永远被执行。
特殊情况:在执行它之前jvm退出。System.exit(0);finalize:是Object类中的一个方法,是于垃圾回收器调用的方式;当catch中有return语句,会在return前执行finally里面的代码。
8,Exception和RuntimeException的区别
Exception:一般性的错误,是需要我们编写代码进行处理的。
RuntimeException(和RuntimeException的子类):运行时异常,这个我们也不需要处理, 其实就是为了让他在运行时出问题,然后我们回来修改代码。
在用throws抛出一个的时候,如果这个异常是属于Exception的体系的时候,我们在调用的地方必须进行处理或者继续抛出。
9, 自定义异常: 定义类继承Exception或者RuntimeException
a, 让该自定义类具备可抛性;b,让该类具备操作异常的共性方法。
class MyExcepiton extends Exception {
MyExcepiton(){}
MyExcepiton(Stringmessage) {
super(message);
}
}
class MyException extends RuntimeException {
MyExcepiton(){}
MyExcepiton(String message) {
super(message);
}
}
10,throws和throw:有throws的时候可以没有throw;有throw的时候,如果throw抛的异常是Exception体系,那么必须有throws在方法上声明。 throws用于方法的声明上,其后跟的是异常类名,后面可以跟多个异常类,之间用逗号隔开;throw用于方法体中,其后跟的是一个异常对象名。
---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------详细请查看:<a href="http://edu.csdn.net" target="blank">http://edu.csdn.net</a>