成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

淺談對程序開發(fā)中異常的理解和認識

開發(fā) 后端
本文將作者對異常的理解和認識。利用異常控制程序流程,利用異常做數(shù)字的判斷函數(shù),異常是幫助程序員寫出好代碼的捷徑。

從接觸異常開始我就弄不明白她,不會用她,想在系統(tǒng)中是異常機制發(fā)揮的***,進行了很多嘗試,利用異常控制程序流程,利用異常做數(shù)字的判斷函數(shù),利用異常消除系統(tǒng)中可能出現(xiàn)的惱人的異常提示框,為了更好了利用異常看了很多關(guān)于異常的文章,直到有一天看到了一句話——“永遠不要去處理你不知道怎么處理的異常”,這才恍然大悟,感覺自己一直在用強大的異常機制干一些旁門左道的是事,更談不上理解異常在程序中的地位和意義,異常其實一種報告機制,“她以一種不可回避的方式報告程序中所出現(xiàn)的問題”,她幫助程序員走向正確的道路,她忠實的向程序員提供錯誤報告,她希望有誰能重視并處理掉她報告的問題,哈,真不敢想象,沒有了異常機制該如何編制高質(zhì)量的程序!下面就個人的理解和看法瞎說幾句,敬請各位批評指正,不勝感激!

異常的工作原理,在有問題的地方產(chǎn)生異常,馬上停止當(dāng)前的工作,轉(zhuǎn)向異常處理代碼,如果找不到異常處理代碼,就會見異常向一層匯報,上一層接到異常會做同樣的事,轉(zhuǎn)向異常處理代碼,或者再將異常向上匯報,這樣逐層間錯誤傳遞出去,直到有一層處理了異常或是一直報告給程序的使用者——用戶。這個層就是調(diào)用棧,當(dāng)用戶A運行程序B,B從函數(shù)C開始執(zhí)行,調(diào)用函數(shù)D,再調(diào)用函數(shù)E,再調(diào)用函數(shù)F,這時F出現(xiàn)了異常,那么這個異常的調(diào)用棧就是A(棧底)—〉B—〉C—〉D—〉E—〉F(棧頂),這個異常就會沿著這個棧從棧頂開始向棧底的方向報告,如果在函數(shù)C中有對這個異常的處理代碼,那么這個異常的報告鏈就是F—〉E—〉D—〉C。可以看出,如果在完整的調(diào)用棧中沒有處理這個異常的代碼,用戶A就成了異常報告的終點,向windows界面系統(tǒng),會彈出一個惱人的消息對話框哈。

那么用戶A向誰報告呢,哈哈,這個已經(jīng)不屬于程序的范圍了,感覺用會對程序而言好像上帝一樣,訴說痛苦已經(jīng)讓上帝都聽到了,就心滿意足了哈哈,看來程序真虔誠哈哈。對于異常這個特性,也可以比喻成下屬向上級報告問題,如果下屬知情不報,問題就嚴(yán)重了,你要是領(lǐng)導(dǎo)知道下屬是這樣的八成就踢了他,相反如果你有一個報告機制健全的下屬隊伍,哈哈你就威風(fēng)了。日本企業(yè)文蛤中有個宗旨——聯(lián)絡(luò),商談,報告,其實就是想讓員工都具有向上級匯報的習(xí)慣。現(xiàn)在再看看程序,哈哈,你不用給她們灌輸什么企業(yè)文化,不用她們講述什么報告的重要性,她們本身就是忠實報告的,如果把程序員比作企業(yè)老總,那么程序就是訓(xùn)練一隊有素的員工。

怎樣處理異常。在這里有個原則就是“永遠不要去處理你不知道怎么處理的異常”,也就是只處理你知道如何處理的異常,對那些你不知道的異常必須廣開言路,并積極地向上級匯報。什么叫知道如何處理呢?先說一下處理異常有哪些方式,大體有,彈出提示消息框(這個消息框不同于那個惱人的異常報告消息框,她是捕獲異常后,根據(jù)處理的具體環(huán)境程序員主動編寫的友好的提示消息框),記錄錯誤日志,吞掉,做善后工作等等,那么出現(xiàn)異常時就要站在出現(xiàn)異常的模塊的立場上考慮一下我應(yīng)該選擇哪種處理方式呢?如果不能做出選擇就選擇不處理,即向上級報告。

舉個例子,函數(shù)Fun1是創(chuàng)建并返回一個活動的數(shù)據(jù)連接對象的方法,他接受一個數(shù)據(jù)庫連接字符串,如果調(diào)用者(上級)給他一個錯誤的連接字符串,這時Fun1創(chuàng)建不了連接對象,產(chǎn)生了一個創(chuàng)建不了連接對象的異常,那么這時他應(yīng)該怎樣處理這個異常呢?彈出友好的消息框?說什么友好,F(xiàn)un1根本就不知道是什么原因使他接收到了錯誤的連接字符串,彈一個“連接字符串有誤”,用戶肯定都有殺你的心,這個提示和用戶的業(yè)務(wù)邏輯有嘛關(guān)系!記錄錯誤日志,這個還行,但是記錄下來的文字無非就是“連接字符串有誤,連接字符串是:SQL……”,好點的話,從連接字符串中看出了問題,一般情況下還得根據(jù)代碼上下文去找問題原因。這個方式不是不行是不好。吞掉,哈哈開什么玩笑,你既創(chuàng)建不了連接,又不吱一聲,想讓調(diào)用者瘋了呀,這個肯定不行。做善后工作,行,確實應(yīng)該清理一下現(xiàn)場,免得浪費資源,但是還是沒吱一聲,所以這個方式做的不徹底。沒招了,哈,其實上面的分析給我們指明了一條路,幫助我們祛除了錯誤的選擇,這條路就是向上匯報,或是不加任何出來代碼,或是記錄日志,做些善后,再重新將異常拋出。

那么什么時候就知道怎樣處理異常了,這就得看實際的情況和用戶的要求了,這句話等于沒說,就像其他的標(biāo)題醒目但給出的結(jié)論卻模棱兩可文章一樣,哈哈,這里可以給幾個建議,

1,一般地,底層模塊或是方法中不要處理異常,

2,編寫公共模塊、DLL等是,不能采用彈出對話框等依賴于平臺,框架的方式處理異常,

3,編寫公共模塊、DLL等時,必須在使用文檔中注明每個方法屬性可能拋出的異常。

4,永遠不要寫   try 這樣的語句。

  1. {  
  2.  
  3. }  
  4. catch(Exception)  
  5. {  
  6. o nothing  

自定義異常。明白了異常的原理和機制后,就可以自己定義異常了,這樣的實踐往往在編寫控件、公共模塊、DLL等的時候,用錯誤編號在網(wǎng)上搜索一下,能找出一大堆關(guān)于錯誤代碼的描述。其中大多數(shù)是M(icro)S(oft)制定的,MS 從操作系統(tǒng)到各種各樣的框架都有對各種異常的編號,對每種異常做出了詳細的定義,如果你還用過像Spread等商業(yè)控件,也可以看到他里邊的各種各樣的異常定義,也就是說我們自己也可以定義異常,在必要的時候,這樣就可以讓自己寫的模塊也加入到訓(xùn)練有素的員工隊伍中了。至于如何定義異常,具體的編成語言有具體的做法,比如C#中指定一異常一個從Exception繼承來的類,VB中異常是個全局變量等等,參見感興趣語言的語法指南就可以了。

對異常的重新認識,一直以來許多人都認為異常是非常可怕的,可惡的,她是錯誤的化身,她有惱人的彈出對話框,弄得用戶跟兇煞惡神似的哈哈,其實這些都是誤解,異常一直默默地忠實的報告著程序中出現(xiàn)的嚴(yán)重的不可回避的問題,她為了程序、系統(tǒng)的正確性、嚴(yán)謹性呼喚你,希望你重視這些問題,希望你用智慧解決這些問題,她是多么的可愛,又是多么的高尚,從來沒有因為對她的誤解而放棄自己的使命……(哈哈,扯淡,煽情了……)。異常很重要,我們更好學(xué)會如何去使用她。

【編輯推薦】

  1. 針對Hibernate load方法產(chǎn)生異常的解決方法
  2. 奇怪的Eclipse Debug異常
  3. Windows CE異常和中斷服務(wù)程序初探
  4. 如何更合理的利用Java中的異常拋出
  5. PHP5中的異常處理詳解
責(zé)任編輯:彭凡 來源: cnblogs
相關(guān)推薦

2011-03-22 10:16:48

程序員

2016-09-18 20:53:16

JavaScript閉包前端

2009-04-24 09:43:09

.NETASP.NET框架

2015-06-11 10:33:58

企業(yè)級云計算混合云應(yīng)用

2009-12-11 14:17:36

ASP.NET Coo

2011-03-22 09:49:15

JavaScript

2017-07-14 10:55:05

2009-06-04 09:41:50

struts2上傳文件

2012-05-15 02:12:20

JavaJava異常

2017-11-30 06:03:49

物聯(lián)網(wǎng)數(shù)據(jù)IT

2011-07-05 10:20:38

java

2020-12-01 08:47:36

Java異常開發(fā)

2023-03-29 10:19:44

異步編程AsyncPromise

2020-08-31 07:19:57

MonoFlux Reactor

2023-12-11 14:19:00

Java程序異常

2009-04-10 09:43:00

Java輸出流異常

2012-12-21 09:48:06

JavaJavaSE異常

2012-12-21 10:15:35

2009-06-23 14:07:14

JavaFX

2011-07-20 17:10:54

C++
點贊
收藏

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

主站蜘蛛池模板: 成人九色 | 成人在线免费视频 | 日日噜噜噜夜夜爽爽狠狠视频, | 亚洲一区二区精品视频 | 欧美亚洲第一区 | a级片在线观看 | 国产精品久久久久久久免费大片 | 国产一区中文字幕 | 亚洲精品黄色 | 国产一级精品毛片 | 嫩草一区二区三区 | 国产乱码精品一区二区三区忘忧草 | 国偷自产av一区二区三区 | 欧州一区二区三区 | 亚洲高清一区二区三区 | 97色在线观看免费视频 | 一级片网址 | 欧美色综合一区二区三区 | 精品一区二区久久 | 天天干天天操 | 久久亚洲一区二区 | 狠狠的干狠狠的操 | 亚洲免费视频一区 | 欧美午夜一区 | 国产精品国产成人国产三级 | 北条麻妃av一区二区三区 | 成人亚洲综合 | 成人免费视频网站在线看 | 精品欧美一区二区三区久久久小说 | 蜜桃特黄a∨片免费观看 | 久久久久久久香蕉 | 欧美6一10sex性hd | 日韩视频在线免费观看 | 日韩精品在线免费观看 | 在线视频三区 | 大象一区| 宅男伊人 | 91麻豆精品国产91久久久资源速度 | 亚洲欧美一区二区三区国产精品 | 国产高清一区二区三区 | 全部免费毛片在线播放网站 |