none
取得Exception型別名稱 RRS feed

  • 問題

  •  

    VISTA

    C#

    VS2008

    ACCESS 2007

     

    各位前輩:

     

    我想將所有的Exception整合在一個Class下

    程式下只抓Exception ex

    再將其傳到ExceptionClass去判斷

    不知這樣的想法對不對

    因為想寫一個LOG檔

    記錄所有的Exception發生時間及其Exception代號和訊息

    另請問要如何取得Exception代號

    查MSDN上好像沒有一個屬性是可以取得代號及型別名稱的

     

    下方程式是先以找不到伺服器上的資料庫為例

     

    程式內
                try
                {
                    bool isUpdating = worldSMSWeb.IsupdatingStructure(updateNumber, Id, out nowUpdateNumber);
                    if (isUpdating == true)
                    {
                        MessageBox.Show("Updating.");
                    }
                }
                catch (Exception ex)
                {
                    ExceptionClass ec = new ExceptionClass();
                    string msg = ec.SmsException(ex);
                    MessageBox.Show(msg);                

                }  

     

    ExceptionClass:

    class ExceptionClass
        {
            public string SmsException(Exception ex)
            {
                switch (ex.GetType())//必須是整數類資料型別的值
                {
                    case System.Data.OleDb.OleDbException: //是型別,無效
                        {
                            return "找不到伺服器資料庫檔案";
                        }
                        break;
                    default:
                        return "發生未定義的例外處理";
                        break;
                }
            }
        }

    2008年9月10日 上午 04:02

解答

  • 你可以利用字串方式來判斷。

     

     

    2008年9月10日 上午 04:17
    版主
  •             switch (ex.GetType().ToString())

                {
                    case "System.Data.OleDb.OleDbException":

                        return "找不到伺服器資料庫檔案";
                        break;
                    default:
                        return "發生未定義的例外處理";
                }

    2008年9月10日 上午 05:29

所有回覆

  • 你可以利用字串方式來判斷。

     

     

    2008年9月10日 上午 04:17
    版主
  •             switch (ex.GetType().ToString())

                {
                    case "System.Data.OleDb.OleDbException":

                        return "找不到伺服器資料庫檔案";
                        break;
                    default:
                        return "發生未定義的例外處理";
                }

    2008年9月10日 上午 05:29
  • 謝謝二位前輩的指導 

    2008年9月10日 上午 07:17