JAVA 的异常机制主要依赖于try、catch、finally、throw、和throws五个关键字,其中,
1.
try{
// 写可能出现异常的代码
// 一旦出现一个异常,那么异常后面的代码将不会继续执行,也就是说,try 只会抛出一个异常
}
2.
catch( Exception e){
// 捕获try中抛出的异常
// 也可以进行相关异常的处理
e.getMessage(); // 打印出异常信息
e.printStackTrace(); // 异常信息跟从栈
}
3.
finally{
// 总会执行的代码
// 一般是关闭连接,释放资源
}
4.
throw 是程序员自己抛出一个异常 写在catch代码块中
5.
throws 是声明会出现异常,写在方法名后面
================================================================================================
上面只是很简单的介绍了五个关键字,接下来看一下系统提供的异常情况
(截图来自《疯狂java讲义》)
只针对Exception ,可以清楚的看出,各个异常的父类是 Exception,所以抛出的异常都可以赋给Exception对象,当然如果存在多个catch语句,应该把 Exception对象的参数放在最后一个catch中,说白了就是这样的:
try{
//……
}catch(NullPointerException e){
//……
}
catch(RuntimeException e){
//……
}
catch(Exception e){
//……
}
(可以这样理解,子类可以赋给父类,但是 父类不能赋给子类(强制转换除外),把Exception就看做一个类)
在一般项目开发中通常不会将异常细化,一般在catch捕获的都是Exception对象和自定义的异常;
系统异常,无须程序员来抛出异常;
自定义异常,需要程序员主动抛出异常, throw new myException("这是我自定义的异常");
把Exception就看做一个类,自定义的异常,就是继承Exception,并提供构造函数(也可以不提供)。、
如:
public class myException extends Exception {
public myException(String message) {
super(message);
}
}
================================================================================================
总结:
java异常机制,是针对可能出现异常的代码,提供一种解决机制,不能用于业务的逻辑判断,虽然能够实现某些业务逻辑上的跳转什么的,但是这是不规范的。
当程序中出现异常,是一定要解决的,虽然可以用 throws 声明 有异常的方法,但是,调用该方法的方法要提供异常解决的办法,当然也可以再次用 throws 声明 ,但是,最终还是要在一个方法中提供异常解决的办法。(要在江湖混,迟早是要还的,哈哈!)
java异常处理机制,会结合其他知识一起运用的,为的是,提高代码的健壮性。
(这是我学习java的第一篇博客,写的不好,我会坚持写下去,就算没人看,也要写给自己看。)