0

ファイルに保存するためのこのコードがあります。

string filePath = Path.Combine(Path.GetTempPath(), "ConnectFour.txt");

try
{       
using (StreamWriter myFile = File.CreateText(filePath))
{
  // saving code
}

}catch (IOException){
    MessageBox.Show("There was an error saving this game!", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);

} catch (Exception){
    MessageBox.Show("There was an error saving this game!", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
}

ファイル処理を使用するときに例外を処理するためのより良い方法はありますか?FileNotFoundのようなより具体的な例外をキャッチするかもしれませんか?おすすめは何ですか?別のコンピューターのアプリケーションで実行可能ファイルを使用しているときに、メッセージボックスが表示され(例外がキャッチされています)、それが何であるかわからないため、これを求めています。また、この例外は、このアプリケーションを使用している各コンピューターに表示されないため、理解するのがより困難です。

4

4 に答える 4

1

スローされた例外を使用して、メッセージを表示してみませんか。

}
catch( IOException e )
{
   MessageBox.Show("There was an error saving this game: " + e.Message
                    , "ERROR"
                    , MessageBoxButtons.OK
                    , MessageBoxIcon.Exclamation
                    , MessageBoxDefaultButton.Button1);
}

また、操作の前にファイルが存在する必要がある場合は、File.Exists( file ). エラーチェックは常に例外処理よりも優先されます...

于 2012-12-11T21:24:58.383 に答える
1

原則として、通常はすべての例外をキャッチする必要はありません ( と記述してcatch(Exception)) が、この特定の時点で実際に処理できる例外のみをキャッチする必要があります。

ドキュメントを見て、保存コードで使用されるすべてのメソッドによってスローされる例外を確認してください。特定のアルゴリズムの場合にそれらが実際に意味することと、例外をユーザーフレンドリーなエラーメッセージに変換する方法を考えてください.

たとえば、UnauthorizedAccessException と FileNotFoundException はまったく別のものです。「エラーが発生しました」と書くだけでは、ユーザーは何が悪いのか理解できません。

有用なデバッグ情報を取得するために、例外をログに記録することを検討してください。

于 2012-12-11T21:49:34.790 に答える
0

例外ベースのワークフロー管理は、操作を処理する場合に可能な唯一のガイドラインではないにしても、推奨されるガイドラインIOです。ファイルも同様です。IOアーティファクトを処理しているときに予期される例外処理がない限り、プログラムワークフローを処理する他の方法がないことがよくあります。

あなたの場合、私はcatchすべての予想される例外を追加します、そして他の人のためにただスタックに上がるために去ります。

お役に立てれば。

于 2012-12-11T21:26:53.800 に答える
0

あなたはこのようにすることができます:

try{}

catch(exception ex){
if(ex is IOException){
messagebox.show("Your Specific Message");
//and do others like this

}
}
于 2012-12-11T21:25:13.010 に答える