2016-05-04 21 views
-5

このコードはうまくいきます。問題はありません。c#ファイルに書き込むtry catch cat

問題は、try catchブロックを置いてみたいということです。これは私が思いついたものです。どんな漁獲量も提案できますか?それともそれはそれは良いですか?

String strFileLine1 = "This is a folder that will be used by the Virtual Flashcard program."; 
String strFileLine2 = "Please do not delete."; 
String myFilePath; 
. 
. 
. 
SaveFileDialog saveFile = new SaveFileDialog(); 
saveFile.FileName = "FlashCard.txt"; 
saveFile.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"; 
saveFile.ShowDialog(); 

myFilePath = Path.GetDirectoryName(saveFile.FileName); 
label2.Text = myFilePath; 

try 
{ 
    using (StreamWriter fileWrite = new StreamWriter(saveFile.FileName)) 
    { 
     fileWrite.WriteLine(strFileLine1); 
     fileWrite.WriteLine(strFileLine2); 
    } 
} 
catch (Exception ex) 
{ 
    MessageBox.Show("There is a problem"); 
} 
+2

を思い付いたコードはありますか?なぜそれを無視しようとしているのであれば、例外をキャッチするのはなぜですか? – David

+1

[MSDN](https://msdn.microsoft.com/en-us/library/7ack4zyt(v = vs.110).aspx)ページを確認すると、 'WriteLine'がObjectDisposedExceptionとIOExceptionをスローします。 –

答えて

2

この説明をまとめます。 @Erresenから、 "あなたは現在、現在のキャッチですべての例外をキャッチしています。"

受信した特定の例外に基づいて特定の処理を実行したくない場合は、これは問題ありません。

しかし、@ Johny Moppが述べたように、ObjectDisposedExceptionとIOExceptionは潜在的な例外です。おそらく、IOExceptionが発生した場合は、アラートを作成してメソッドがファイルにアクセスできなかったこと、ブロックされていること、またはファイルを再度試すのを待つことをユーザーに通知することをお勧めします。しかし、ObjectDisposedExceptionの場合、唯一のオプションは、アクションが不可能であることをユーザーに通知することです。したがって、例外を個別にキャッチして適切に処理する必要があります。

0

建設的な批判と助けをくれた方々に感謝します。他の人に....ここ

は、私はあなたが「より多くのキャッチ」とはどういう意味ですか

SaveFileDialog saveFile = new SaveFileDialog(); 
saveFile.FileName = "FlashCard.txt"; 
saveFile.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"; 
saveFile.ShowDialog(); 

myFilePath = Path.GetDirectoryName(saveFile.FileName); 
label2.Text = myFilePath; 

try 
{ 
    using (StreamWriter fileWrite = new StreamWriter(saveFile.FileName)) 
    { 
     fileWrite.WriteLine(pushUp.StrFileLine1); 
     fileWrite.WriteLine(pushUp.StrFileLine2); 
    } 
} 
catch (IOException ex) 
{ 
    MessageBox.Show(pushUp.StrIOExcepion); 
} 
catch (ObjectDisposedException ex) 
{ 
    MessageBox.Show(pushUp.StrObjectDisposedException); 
} 
catch (Exception ex) 
{ 
    MessageBox.Show(pushUp.StrException); 
} 
+0

最後のキャッチ 'catch(Exception ex){...}'は不要かもしれません。 @ Johnny MoppがリンクしているMSDNの記事では、スローされる唯一の例外は最初の2つです。そして、私が間違っていない限り、ファイルが開かれていればそれを閉じるために 'finally'を追加したいでしょう:http://www.java2s.com/Code/CSharp/File-Stream/TryandcatchexceptionsforStreamWriter.htm – Machtyn