自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

淺談異常與戀愛(ài)

開(kāi)發(fā) 后端
在我的理解中,所謂的異常機(jī)制也就是讓程序在出現(xiàn)某些錯(cuò)誤的情況下還能繼續(xù)執(zhí)行完,如同兩個(gè)人在戀愛(ài),雖然出現(xiàn)各種問(wèn)題,但還是希望將來(lái)能繼續(xù)走下去。詳細(xì)請(qǐng)看下文

前面扯過(guò)一篇淺談面向?qū)ο笈c女媧造人,今兒我接著扯……

在我的理解中,所謂的異常機(jī)制也就是讓程序在出現(xiàn)某些錯(cuò)誤的情況下還能繼續(xù)執(zhí)行完,如同兩個(gè)人在戀愛(ài),雖然出現(xiàn)各種問(wèn)題,但還是希望將來(lái)能繼續(xù)走下去。

 

在java的異常結(jié)構(gòu)中有一個(gè)頂級(jí)父類叫做Throwable,這個(gè)父類具有兩個(gè)子類,分別是:

  Error

  Exception

為了便于初學(xué)者能更好的理解異常機(jī)制,我姑且先列舉一些不恰當(dāng)?shù)睦樱?br /> 可以這樣理解Error

1.你某天很舒服的坐在沙發(fā)上看電視,你爸突然把你拉到書(shū)房里語(yǔ)重心長(zhǎng)的對(duì)你說(shuō):

 “你和她不能在一起,她其實(shí)是你失散多年的親妹妹”(神馬感覺(jué),心里一萬(wàn)只草泥馬在奔跑對(duì)不對(duì)?)

2.終于能在一起了,尼瑪突然在她房間抽屜發(fā)現(xiàn)當(dāng)年變性手術(shù)的費(fèi)用單(這次不只一萬(wàn)只了)。

兩個(gè)例子都有一個(gè)共同點(diǎn),就是你不會(huì)和她繼續(xù)在一起了,你們的結(jié)合會(huì)是一種Error(錯(cuò)誤),是硬傷?。。?/p>

對(duì)于這種根本無(wú)法解決或無(wú)法隱忍的情況就是所謂的Error,懂了吧

而在java語(yǔ)言中,Error則是代表硬件,jvm或代碼本身存在問(wèn)題

雖然你對(duì)于無(wú)法處理這一情況很不甘心,但你還是會(huì)一遍遍檢查配置和你的代碼,以期望能夠解決

再看看Exception

把致命問(wèn)題Error排除了(她是個(gè)好女孩),現(xiàn)在你和她能夠在一起(程序能夠繼續(xù)執(zhí)行)又多了一份希望。

但是,你仍然不能掉以輕心。

兩個(gè)人相處,難免會(huì)產(chǎn)生一些不好的情緒,一旦你沒(méi)能處理好,那么兩個(gè)人的感情還是over(程序無(wú)法繼續(xù)執(zhí)行)

在這里,Exception就是那些你要處理的情緒問(wèn)題的總稱。

為什么是總稱呢?因?yàn)榇竽X產(chǎn)生的情緒(異常)非常復(fù)雜,還可細(xì)分為各種情緒(糾結(jié)體)……

我們判斷一個(gè)人的情緒是靠經(jīng)驗(yàn),比如產(chǎn)生這種壞情緒后,她有哪些行為和反映。

在java里,Exception是一個(gè)父類,它還有很多的子類(也就是各種壞情緒的封裝)

 

你看,就這么簡(jiǎn)單,我們就理解了整個(gè)java的異常體系。

 

Throwable下的兩個(gè)已知子類,Error和Exception

 

  

Exception下的各個(gè)細(xì)分的異常

既然我們了解了java的異常體系,也知道了Error是無(wú)法處理的,那么我們能做的就是針對(duì)Exception的操作了。

也就是在戀愛(ài)過(guò)程中,我們對(duì)她壞情緒的處理,好讓兩個(gè)人的感情能夠繼續(xù)……

那么如何操作呢?

很簡(jiǎn)單,你只需要進(jìn)行判斷和測(cè)試,確認(rèn)她的行為是否符合你經(jīng)驗(yàn)中她這一壞情緒的反映,然后做出處理就行了。

相信你一定知道基本的除數(shù)為0異常,這里就不再寫了,任何一本基礎(chǔ)書(shū)都有。

為了避免針對(duì)性的代碼造成不好理解,我們下面都寫偽碼

實(shí)例1:典型的try...catch結(jié)構(gòu)

  1. //女友為什么是public?因?yàn)檎l(shuí)都能追  
  2. public class GirlFriend {  
  3.     //還記得嗎?你們的故事就是從這開(kāi)始的  
  4.     public static void main(String[] args) {  
  5.        
  6.     //我們用try包裹的代碼來(lái)判斷和測(cè)試她不穩(wěn)定的壞情緒  
  7.     try {  
  8.         她小情緒的反映  
  9.         她小情緒的行為  
  10.         她小情緒的眼神  
  11.         ……  
  12.        
  13.     //在實(shí)際中則是Exception e,你肯定知道  
  14.     //為什么有個(gè)e對(duì)象,都說(shuō)了異常也是一種類  
  15.     //所謂的catch就是捉到她壞情緒的原因,并進(jìn)行處理  
  16.     } catch (工作累了異常 e) {  
  17.         //打印異常信息,你可以認(rèn)為是她在訴說(shuō)原因  
  18.         //實(shí)際中我們要結(jié)合場(chǎng)景來(lái)處理  
  19.         e.printStackTrace();  
  20.     }  
  21.     }  

你看,這樣我們就能有針對(duì)性的處理單個(gè)異常了,在try里面測(cè)試catch里面進(jìn)行處理當(dāng)然,有時(shí)候一個(gè)人情緒不好是由于多種原因,那么你只能小心翼翼的根據(jù)經(jīng)驗(yàn)來(lái)捕捉更多的異常(壞情緒的封裝對(duì)象),此時(shí)你也就需要多條catch語(yǔ)句了

實(shí)例2:復(fù)合的catch語(yǔ)句

  1. try {  
  2.     ......  
  3. catch (工作累了異常 e) {  
  4.     捶背  
  5. catch (口渴了異常 e) {  
  6.     倒水  
  7. catch (被鄙視了異常 e) {  
  8.     安慰  
  9. //這里的Exception是所有壞情緒的父類  
  10. catch (Exception e) {  
  11.     各種安慰  
  12.     各種獻(xiàn)殷勤  
  13.     各種傾聽(tīng)  

為什么所有壞情緒對(duì)象(Exception)要放到最后捕捉呢?

很好理解,當(dāng)你在無(wú)法確定她到底是累了,渴了還是怎么地產(chǎn)生的壞情緒時(shí)你便可以認(rèn)為,反正她就是特么的很煩,想鬧脾氣,你得處理?。。。ú蝗痪蚾ver)

 

好吧,你看到了,不論是討好女友還是處理異常,都是一件相當(dāng)不爽的事

下面我們來(lái)看看一個(gè)很簡(jiǎn)單,很樸實(shí)的關(guān)鍵字finally

實(shí)例3:finally語(yǔ)句的使用

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

看,finally好用吧,你可以這樣理解

是男人就應(yīng)該默默的承擔(dān),不管有沒(méi)有異常,我都執(zhí)行在java中,finally最常用的場(chǎng)合就是最后關(guān)閉io流對(duì)象了,可見(jiàn)我寫的另一篇筆記

 

至此,我們已經(jīng)講完了java異常的基礎(chǔ)操作

新手可能會(huì)問(wèn),咦?throws和throw兩大關(guān)鍵字去哪兒了

別急,咋慢慢來(lái),去端杯茶緩緩……

對(duì)于throws在java中的意思是,讓調(diào)用處去處理這一異常

就比如說(shuō)她們受了一頓悶氣,本來(lái)你不說(shuō)還沒(méi)什么,你一說(shuō)她們就忍不住了

把所有的火都對(duì)你發(fā),誰(shuí)讓你要去惹她們的?

自己可以處理卻不處理,俺們就叫做throws,一般在方法后面使用

實(shí)例4:throws的用法

  1. public void 降低憤怒() throws 憤怒的異常 {  
  2.        
  3.     /*你看,在這里明明可以try...catch的  
  4.     但是卻沒(méi)有,把異常給拋到了調(diào)用處*/ 
  5.        
  6.     ......     //這是處理方法,此處省略N行代碼  
  7.        

本來(lái)在降低憤怒()這一方法中可以try...catch的,但是不想,要留給招惹它的人那就用throws吧,誰(shuí)惹我誰(shuí)遭殃。

 

其實(shí),女人是一種很奇怪的動(dòng)物,她們有時(shí)候會(huì)假裝自己生氣,從而達(dá)到讓你哄的目的,典型的欠try有木有……

那么,這個(gè)時(shí)候throw就發(fā)揮了作用,在java中,throw表示人為的拋出一個(gè)異常。

實(shí)例5:throw的用法

  1. public void throwMethod() throws Exception {  
  2.        
  3.     throw new 發(fā)嗲了異常("干爹,你來(lái)~~")  
  4.        

這里在throwMethod方法中我們?nèi)藶閽伋隽艘粋€(gè)發(fā)嗲了異常,然后給調(diào)用處try

至于catch部分的內(nèi)容,你們自己看著辦……(尼瑪,我才19怎么就那么邪惡了)

再來(lái),我們?cè)诜碅PI文檔的時(shí)候也許會(huì)發(fā)現(xiàn)類似下面的方法

它們明明拋出了異常,而我們?cè)谑褂弥袇s沒(méi)有try,這是怎么回事?

這叫做RuntimeException,也就是運(yùn)行時(shí)異常,它們可try可不try。因?yàn)橐坏┊a(chǎn)生這種異常就說(shuō)明你的代碼可能存在問(wèn)題,比如數(shù)組下標(biāo)越界等,此時(shí),try...catch意義不大,檢查和修改源碼才是最佳選擇。最后來(lái)說(shuō)說(shuō)自定義異常,自定義異常一般用的不是很多,可以這樣理解:

有時(shí)候你的女友亂發(fā)脾氣,完全不按套路出牌,令你不知所措,以前的經(jīng)驗(yàn)在此也似乎失效。那么,此時(shí)我們就可以定義一個(gè)自定義異常來(lái)描述這種情況。

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

如果想測(cè)試的話,可以throw一個(gè)新的CustomException對(duì)象,構(gòu)造方法中加入信息就可以了。

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

很簡(jiǎn)單,就沒(méi)必要演示了。

原文鏈接:http://www.cnblogs.com/nerxious/archive/2012/12/18/2823617.html

責(zé)任編輯:林師授 來(lái)源: 博客園
相關(guān)推薦

2012-12-21 09:48:06

JavaJavaSE異常

2011-07-05 10:20:38

java

2018-10-16 15:17:07

Python求婚匹配

2015-09-01 10:58:37

戀愛(ài)運(yùn)營(yíng)騰訊

2009-07-14 13:49:29

原型

2010-08-01 16:06:11

Android開(kāi)發(fā)

2012-02-14 09:43:08

2009-06-12 18:54:46

異常程序開(kāi)發(fā)

2013-01-08 15:11:19

OpenStackKVM

2011-02-16 09:48:04

Hashtable

2013-11-12 14:11:10

2018-02-23 14:44:41

負(fù)載均衡技術(shù)分類

2009-03-11 15:30:05

evalwithJavascript

2011-04-18 00:00:00

SQLPLSQL

2021-07-14 13:12:51

2009-09-21 17:30:25

組件復(fù)用服務(wù)復(fù)用

2009-07-10 13:09:53

.Net與Java S

2009-06-26 16:09:53

2010-09-13 14:34:55

2021-08-29 23:25:36

前端開(kāi)發(fā)工具
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)