下面我们来看看一个很简单,很朴实的关键字finally

  实例3:finally语句的使用


1.try {  
2.   
3.    ......  
4.       
5.} catch (Exception e) {  
6.    //Todo  
7.} finally {  
8.    不管你特么心情好不好  
9.    反正都是老子洗碗!!!  
10.    靠……  
11.}
 


  看,finally好用吧,你可以这样理解

  是男人应该默默的承担,不管有没有异常,我都执行在java中,finally常用的场合是后关闭io流对象了,可见我写的另一篇笔记

  至此,我们已经讲完了java异常的基础操作

  新手可能会问,咦?throws和throw两大关键字去哪儿了

  别急,咋慢慢来,去端杯茶缓缓……

  对于throws在java中的意思是,让调用处去处理这一异常

  比如说她们受了一顿闷气,本来你不说还没什么,你一说她们忍不住了

  把所有的火都对你发,谁让你要去惹她们的?

  自己可以处理却不处理,俺们叫做throws,一般在方法后面使用

  实例4:throws的用法


1.public void 降低愤怒() throws 愤怒的异常 {  
2.       
3.    /*你看,在这里明明可以try...catch的  
4.    但是却没有,把异常给抛到了调用处*/ 
5.       
6.    ......     //这是处理方法,此处省略N行代码  
7.       
8.}
 


  本来在降低愤怒()这一方法中可以try...catch的,但是不想,要留给招惹它的人那用throws吧,谁惹我谁遭殃。

  其实,女人是一种很奇怪的动物,她们有时候会假装自己生气,从而达到让你哄的目的,典型的欠try有木有……

  那么,这个时候throw发挥了作用,在java中,throw表示人为的抛出一个异常。

  实例5:throw的用法


1.public void throwMethod() throws Exception {  
2.       
3.    throw new 发嗲了异常("干爹,你来~~")  
4.       
5.}
 


  这里在throwMethod方法中我们人为抛出了一个发嗲了异常,然后给调用处try

  至于catch部分的内容,你们自己看着办……(尼玛,我才19怎么那么邪恶了)

  再来,我们在翻看API文档的时候也许会发现类似下面的方法

  它们明明抛出了异常,而我们在使用中却没有try,这是怎么回事?

  这叫做RuntimeException,也是运行时异常,它们可try可不try。因为一旦产生这种异常说明你的代码可能存在问题,比如数组下标越界等,此时,try...catch意义不大,检查和修改源码才是佳选择。后来说说自定义异常,自定义异常一般用的不是很多,可以这样理解:

  有时候你的女友乱发脾气,完全不按套路出牌,令你不知所措,以前的经验在此也似乎失效。那么,此时我们可以定义一个自定义异常来描述这种情况。


1.public class CustomException extends Exception {  
2.    public CustomException(String msg) {  
3.        super(msg);  
4.    }  
5.}
 


  如果想测试的话,可以throw一个新的CustomException对象,构造方法中加入信息可以了。

  然后你懂的,try...catch处理。

  很简单,没必要演示了。