新加坡之旅

公車上的小朋友,回頭偷看我在「偷拍」

新加坡之旅

新加坡之旅

路人

新加坡之旅

新加坡之旅

Jurong鳥園

新加坡之旅

新加坡之旅

市場一角

新加坡之旅

新加坡之旅

地標-Merlion

新加坡之旅

新加坡之旅

會親人的鯉魚

新加坡之旅

[C#]顯示未處理的例外錯誤

2009-03-11 by Blave Huang | 回應(0) | 449次閱讀

程式難免會有Bug,在可預期下使用try catch,能將可能發生的錯誤解決掉,並通知使用者,如

  1. 開啟檔案失敗
  2. 磁碟空間不足

但難免還是會有未處理到的例外,因此可以這麼做:

在Program.cs中:

[STAThread]
static void Main()
{

AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);

}

2. 加入:

static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
try
{
Exception ex = (Exception)e.ExceptionObject;
MessageBox.Show(string.Format("系統發生未處理的錯誤!\n\n{0}{1}", ex.Message, ex.StackTrace), "系統錯誤", MessageBoxButtons.OK, MessageBoxIcon.Stop);
}
finally
{
Application.Exit();
}
}

3. 加入:

static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
{
DialogResult result = DialogResult.Abort;
try
{
result = MessageBox.Show(string.Format("系統發生未處理的錯誤!\n\n{0}{1}", e.Exception.Message, e.Exception.StackTrace), "系統錯誤", MessageBoxButtons.AbortRetryIgnore, MessageBoxIcon.Stop);
}
finally
{
if (result == DialogResult.Abort)
{
Application.Exit();
}
}
}

此後,當使用者發生exception時,便會提示錯誤訊息;這個時候,就可以把exception的訊息傳到您的Email或是寫到DB中,這樣就容易Debug了!另外,當您自己在Debug模式中,將不會跳出這個MessageBox,而會停留在錯誤的程式碼中,讓您在開發程式時,可以知道錯在哪裡。

回應文章




  • :em01:
  • :em02:
  • :em03:
  • :em04:
  • :em05:
  • :em06:
  • :em07:
  • :em08:
  • :em09:
  • :em10:
  • :em11:
  • :em12:
  • :em13:
  • :em14:
  • :em15:
  • :em16:
  • :em17:
  • :em18:
  • :em19:
  • :em20:
  • :em21:
  • :em22:
  • :em23:
  • :em24:
  • :em25:
  • :em26:
  • :em27:
  • :em28:
  • :em29:
  • :em30:
  • :em31:
  • :em32:
  • :em33:
  • :em34:
  • :em35:
  • :em36:
  • :em37:
  • :em38:
  • :em39:
  • :em40:
  • :em41:
  • :em42:
  • :em43:
  • :em44:
  • :em45:
  • :em46:
  • :em47:
  • :em48:
  • :em49:
  • :em50:
  • :em51:
  • :em52:
  • :em53:
  • :em54:
  • :em55:
  • :em56:
  • :em57:
  • :em58:
  • :em59:
  • :em60:
  • :em61:
  • :em62:
  • :em63:
  • :em64:
  • :em65:
  • :em66:
  • :em67:
  • :em68:
  • :em69:
  • :em70:
  • :em71:
  • :em72:

*