2016-08-19 14 views
1

unreachable code警告がのcatchブロックにあり、デバッグできません。C#.Netで到達不能なコードが検出されました

private void HandleDevelopmentServer() 
{ 
    string sErrMsg = ""; 
    try 
    { 
     QuasarInterfaces.ISecurity oSecurity = null; 
     Global.CreateSecurityComponent(ref oSecurity); 
     System.Data.DataSet oDS; 
     DataTable dtDBSettings = new DataTable(); 
     string sDBString = System.Configuration.ConfigurationSettings.AppSettings["Environment"]; 
     Global.ReadDBConfig(sDBString, ref dtDBSettings); 
     oSecurity.FetchAllUsers(out oDS, out sErrMsg, dtDBSettings) 

     if (sErrMsg.Length > 0) 
      throw new Exception(sErrMsg);    

     if ((oDS != null) && (oDS.Tables.Count != 0)) 
     { 
      DropDownList1.DataSource = oDS; 
      DropDownList1.DataBind(); 
     } 
    } 
    catch (Exception e) 
    { 
     throw new Exception("HandleDevelopmentServer function failed;" + e.Message);    
     Global.writeLog("" + e.ToString()); 
    } 
} 
+2

例外をスローする前にロギングを移動します。 –

+1

Um、例外をスローした後で*ログに記録しようとしないでください? 'Global.writeLog'メソッド呼び出しが今までどおり動作するとはどうでしょうか? –

+1

エラーメッセージに記載されているように、前に例外をスローしているため、 'Global.writeLog(" "+ e.ToString());'部分に到達できませんそれを扱う。 –

答えて

4

は、この行は決して起こらないだろう:

Global.writeLog("" + e.ToString()); 

あなたは以前にその時点で終了します。この方法を意味し、それより上の例外をスローされるバグを修正する方法を私に提案して下さいコールスタック

2つのスイッチを切り替えるだけで問題ありません。

catch (Exception e) 
{ 
    Global.writeLog("" + e.ToString()); 
    throw new Exception("HandleDevelopmentServer function failed;" + e.Message);    
} 

そして、あなたも"" +を削除することができます。

+0

@Ganesh Chemanchula - これは問題の解決に役立ちましたか? –

+0

はいGilad !!どうもありがとうございました:) –

+0

@GaneshChemanchula - 私の答えを受け入れることによって解決したように印を付けることを検討してください。 –

2

例外がスローされる前にログが書き込まれるように、catchブロックの2つの行を切り替える必要があります。

関連する問題