2009年5月13日

[C#] - try...catch簡介

try...catch的用意就是試試看,主要的功能是例外處理而這也是初學者應該要列為首要學習的事情之一

try...catch主要用的地方是用在處理可能會發生例外的位置上,

廢話不多說,下面有一個範例
try
{
string sqlstr = "SELECT account FROM [user] where account='" + account.Text + "' and password='" + pwd.Text + "';";
OleDbConnection con = basic_class.access_con();
OleDbDataReader rd = basic_class.sqlread(sqlstr);
if (rd.Read())
{
MessageBox.Show(rd["account"].ToString());
}
else
{
MessageBox.Show("帳號或密碼錯誤");
}
}
catch (Exception ex)
{
MessageBox.Show("與資料庫連線失敗" + ex.ToString());
}


簡單說明一下這段code,這段是在寫帳號密碼認證的code,

會先取得資料庫連線,這個時候,try就會展現出他的功用哩,

因為每次的連線不一定是成功的,所以必須要用try將連線的code包在裡面

假使連線出現錯誤,則由catch的code來執行例外處理,將相關的錯誤訊息秀出來,

try..catch小妙用是可以拿來當作簡單的偵錯用,是不賴的.

接下來來談談使用try..catch好不好?

大家一定會想try..catch是用來處理例外的,想必一定要花上一些時間,

對於程式執行將會產生速度上的影響,

在這邊分析一下:

1.確定不會出現try..catch則不使用try..catch
(這樣就不會有效能上的疑慮了)

2.使用的code可能會發生例外,則可以考慮使用try..catch
(如果不用造成程式當掉,這樣還談什麼效能呢...)

3.測試用,也就是刻意的捕捉出現的例外,EX:sql交易,這樣的話則必需要有try..catch的加入
(這樣不僅能找出問題,又能確保程式執行不易出錯)


P.S.上述資料有些是參考web上的說法,做了一點整理,再搭上自己寫code的一些經驗,
有錯請勘正,謝謝觀賞,收工...XD

2 則留言:

  1. 請問~~

    貴程式上未使用con.Open()

    有辦法讀到資料??@@?

    回覆刪除
  2. 您好,因為我把連線database的部分寫入獨立的class裡
    所以裡面才沒看到con.Open()

    回覆刪除