閑話閑說——關於異常

來源:互聯網
上載者:User

前幾天,公司的一個漂亮MM下午的時候突然腳就痛了,然後問她什麼回事,她說她自己也不知道是為什麼,脫了鞋一看,應該是紐到腳了,腫得很厲害。世界上的很多事情都是這樣,你不去注意,不去想,它們幾乎都是那樣的熟悉,那樣的一般,那樣的正常。但是如果我們仔細的想想,或許就能悟出很多的道理來。假如我們的手被東西給割破了,流血了,我們就馬上知道疼痛了,在大多數人眼中疼痛似乎不是個好東西。要是我們不會疼痛會不會很爽呢?答案是否定的。如果我們的手被割破了,我們不知道疼痛,那麼我們就不會馬上進行處理,結果肯定是出血過多而出現生命危險。我們有理由相信曾經有這樣生物,受傷後卻不沒有知覺,終於經過漫長的自然選擇,這些生物不存在了。所以,今天能看到這篇文章的人都是知道疼痛的。

上面的閑話說了這麼多,我們現在進入正題。假如你的程式也如那些沒有知覺的人一樣,結果會怎樣呢。不能否認程式在運行中一定會出現異常,如果程式出現了異常,我們卻絲毫不能覺察到,時間一久,裡面的資料的完整性一定會遭到破壞。很多新手,很怕異常,於是來個了很大的Try,然後catch下,裡面什麼都不做。這種做法很不推薦,既然捕獲了異常,就要對它進行適當的處理。有異常出現,就說明程式在運行中出現了技術上的或者業務上的錯誤。異常的意圖是讓你知道發生了錯誤,而不是讓你難堪。

來看段常見的代碼:
                int test = 0;
                int result = 9 / test;
運行後出現異常:試圖除以零。好丟人啊!改下

            try
            {
                int test = 0;
                int result = 9 / test;
            }
            catch
            {
            }

別人看不到異常了。可是事實上我們程式確實出現了異常,我們不能自欺欺人。try
            {
                int test = 0;
                int result = 9 / test;
            }
            catch (System.DivideByZeroException ex)
            {
                throw new DemoException(123, "使用者試圖輸入被除數'0',進行除法運算");//重新封裝,冒泡
            }
            cath(DemoException ex)
        {
                 //假設這個異常我們能處理,就在這裡直接處理了   
            }
            catch (Exception ex)
            {
                throw new DomoException(000,ex);
            }

不但我們要善於利用.net的異常,也要學會自己產生異常。如:publi int Age
{
  get{return _Age;}
  set
{
  if(value<0)
    _Age=0;
  if(value>55)
    throw new InputEmployeeException("年齡已經超過退休年齡");
  _Age=value;
}
}

說到異常,很多人都知道要把異常log起來。主要原因就是屏蔽這些技術,讓客戶看到友好的提示,而將這些異常留給我們,以便我們更好的重構或者維護我們的程式。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.