catch塊中throw new Exception的意義

來源:互聯網
上載者:User

throw new Exception(String, Exception)

  throw new Exception(String)

  throw是明確地拋出異常

  MSDN:Exception (String, Exception) 使用指定錯誤資訊和對作為此異常原因的內部異常的引用來初始化 Exception 類的新執行個體。

   在發現異常以後作一下記錄異常資訊然後在拋出異常,讓客戶知道有問題了,以便通知技術人員。因為程式異常以後就崩潰的機會很大,先記錄問題下來再崩潰才行。

  捕獲異常以後,再拋出一個新的異常。再拋出新異常之前,你可以對前面捕獲的異常做一些操作,比如記錄日誌、擷取異常資訊然後寫到新異常中

int num = Convert.ToInt32(textBox1.Text);
try
{
    if (num == 0)
    {
        throw new ArgumentNullException("出現零!");
    }
    if (num == 1)
    {
        throw new Exception("出現壹!");
    }
}
catch (ArgumentNullException ex)
{
    MessageBox.Show(ex.Message);
}
catch (Exception ex)
{
    MessageBox.Show(ex.Message);
}

   catch是用來處理錯誤,就是發生了錯誤時,會執行catch部分.注意:是"發生了錯誤時".

  但是, 在沒有發生錯誤時, 你自己想引發錯誤怎麼辦呢? 可以使用throw語句來手工引發一個錯誤.

   比如上面這段程式, 你先畫一個文字框,textBox1,一個按鈕button1, 如果把這段代碼放到button1的click事件裡. 

   如果文字框中文本是0,引發一種錯誤,文字框文本是1時又引發另一種錯誤,並可採用不同的處理辦法.

  我認為catch塊裡通常對附異常有三種辦法:一種辦法是,什麼也不做,catch語句裡只有空語句;另一種辦法是,用messagebox之類的通知異常;還有一種辦法是,throw 一個new的異常。

   用哪種辦法取決於你希望如何處理這個異常。

   如果你想直接通知使用者,用messagebox之類的就好了

   如果你想由調用這個函數的程式來處理,可以throw一個new

   如果你希望你的程式出了“這個”異常還正常運行,就像什麼也沒發生一樣,你可以空語句。

   總之try catch是有意義和必要的,但你的程式如何catch就是你自己的想法嘍。

   一般來說沒有必要明確的throw出一個異常,異常應該是因為程式本身啟動並執行問題而產生的,但是有兩種情況:

   1. 測試的時候,比如說你不能真的類比一個記憶體耗盡這個異常吧,那麼只好明確地throw一個了。

  2. 自訂的異常需要明確的throw出來,因為滿足這個條件往往是我們自己制定的規則不滿足了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.