2016-05-25 13 views
1

ArcGISで実際にタスクとして実行されるモバイルアプリケーションを作成していますが、基本的にはC#エラー処理です。私はwhileループを使用してレコードをループし、StreamWriterを使用してデータの読み取りに失敗したログを記録します。私は各フィールドを別々のファイルに分割しました。trycatchログファイルに失敗したレコードと書き込み可能なフィールドを書き込むことができます。以下の例。C#、Whileループ、キャッチ、ログ、続行

try 
{ 
    TrafficLanesCount = Convert.ToByte(ModifiedFDR.GetValue(ModifiedFDR.GetOrdinal("TRAFICLN"))); 
} 
catch 
{ 
    sw.WriteLine(DOTNumber + " " + "TrafficLanesCount"); 
} 

私は、whileループの終わりに保存していますが、何が失敗した場合、私は、それを記録し、そのレコードをスキップし、次のレコードを続けるにしたいです。誰もこれを行う方法を知っていますか?代わりに

sw.WriteLine(DOTNumber + " " + "TrafficLanesCount"); 

+0

最後に保存するとはどういう意味ですか?ストリームを閉じますか? – nozzleman

+0

whileループを使ってアイデアを提供する可能性があります – BugFinder

+0

ループ全体でコードフラグメントを提供できますか? – MaKCbIMKo

答えて

1

あなたは、リアルタイムでの行を書き込むには

File.AppendAllText("path/to/log.txt", DOTNumber + " " + "TrafficLanesCount" + nvironment.NewLine); 

を使用することができます。この方法では、あなたのログはすべてのキャッチ内で維持されます。

また、非常に成熟したロギングのフレームワークがあることを指摘したいと思います。例えば、NLogまたはLog4netのように、より一般的な名前の2つを指定します。コードが提供使う

0

、私はこのようなものとなるだろう:

var errorList = new List<Exception>(); 
foreach(var record in records) 
{ 
    try 
    { 
     try 
     { 
      TrafficLanesCount = Convert.ToByte(ModifiedFDR.GetValue(ModifiedFDR.GetOrdinal("TRAFICLN"))); 
     } 
     catch 
     { 
      throw new Exception(new string(DOTNumber + " " + "TrafficLanesCount")); 
     } 
    } 
    catch (Exception exp) 
    { 
     errorList.Add(exp); 
    } 
} 

とあとがきを、あなたは、リスト内の例外をループとは、その時点でそれらを処理することができます。

+1

あなた自身の例外をキャッチするのはほとんど意味がありません。内側のtry..catchは冗長です。例外をバブルアップさせてください。 –