プロが教える店舗&オフィスのセキュリティ対策術

VC++2005の.NETで言語はC++/CLIにてアプリを作成しています。

FileStream^ fs;
String^ file;
fs = gcnew FileStream( file, FileMode::Open );

にてファイルをオープンする処理を入れたのですが、
ファイルが存在しない、もしくは何らかのエラー等で、
ファイルが正常に開けない場合のエラー処理は、
どのように判断させればよいのでしょうか?
方法をご存知の方おられましたら、参考例などご教示お願い致します。

A 回答 (3件)

捕まえる方法は前に回答されている方々のやり方でよいと思いますが、そのままだと実際にどんな原因で失敗しているのかわからないのが問題になりませんか?



私ならデバック時だけでもわかるように以下のような記述をします。

try
{
fs = gcnew FileStream(file, FileMode::Open);
}
catch(Exception^ e)
{
System::Diagnostics::Debug::WriteLine(e->Message);
return false;
}

以上、参考までに・・・
    • good
    • 0
この回答へのお礼

御回答ありがとうございます。
確かにエラー内容は分かったほうが良いですね。
ありがとうございました。

お礼日時:2009/12/09 19:09

 こんばんは。



 以下URLのExceptionクラスから、様々な例外クラスへ派生していくのですから、 
 http://msdn.microsoft.com/ja-jp/library/system.e …

 面倒であれば、以下の様にして、根っこを掴んでしまえば良いのでは。

try
{
   fs = gcnew FileStream( file, FileMode::Open );
}
catch ( Exception^ )
{
//問答無用に捕まえる
   return FALSE;
}
    • good
    • 0
この回答へのお礼

御回答ありがとうございます。
期待動作をさせることができました。

お礼日時:2009/12/09 19:08

try~catchで囲んで例外を見ましょう。


http://msdn.microsoft.com/ja-jp/library/47ek66wy …

この回答への補足

御回答ありがとうございます。

try{
   fs = gcnew FileStream( file, FileMode::Open );
}
catch ( ArgumentException^ ){
   return FALSE;
}
catch ( FileNotFoundException^ ){
   return FALSE;
}
・・・

のようなコードで期待動作をさせることが出来ました。
ただ、いくつかの例外を捕らえるには、
上記のようにcatch文を羅列させなければならないのでしょうか?
理想としては、正常にオープンできる以外の全ての例外の場合、
falseを返すようなコードをスマートに書きたいと思うのですが。。

補足日時:2009/12/08 19:38
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!