• ベストアンサー

【C++/CLI】ファイルオープンに失敗した際のエラー処理

VC++2005の.NETで言語はC++/CLIにてアプリを作成しています。 FileStream^ fs; String^ file; fs = gcnew FileStream( file, FileMode::Open ); にてファイルをオープンする処理を入れたのですが、 ファイルが存在しない、もしくは何らかのエラー等で、 ファイルが正常に開けない場合のエラー処理は、 どのように判断させればよいのでしょうか? 方法をご存知の方おられましたら、参考例などご教示お願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • reset_cat
  • ベストアンサー率68% (94/138)
回答No.3

捕まえる方法は前に回答されている方々のやり方でよいと思いますが、そのままだと実際にどんな原因で失敗しているのかわからないのが問題になりませんか? 私ならデバック時だけでもわかるように以下のような記述をします。 try { fs = gcnew FileStream(file, FileMode::Open); } catch(Exception^ e) { System::Diagnostics::Debug::WriteLine(e->Message); return false; } 以上、参考までに・・・

zigen8513
質問者

お礼

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

その他の回答 (2)

回答No.2

 こんばんは。  以下URLのExceptionクラスから、様々な例外クラスへ派生していくのですから、   http://msdn.microsoft.com/ja-jp/library/system.exception(VS.80).aspx  面倒であれば、以下の様にして、根っこを掴んでしまえば良いのでは。 try {    fs = gcnew FileStream( file, FileMode::Open ); } catch ( Exception^ ) { //問答無用に捕まえる    return FALSE; }

zigen8513
質問者

お礼

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

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.1

try~catchで囲んで例外を見ましょう。 http://msdn.microsoft.com/ja-jp/library/47ek66wy(VS.80).aspx

zigen8513
質問者

補足

御回答ありがとうございます。 try{    fs = gcnew FileStream( file, FileMode::Open ); } catch ( ArgumentException^ ){    return FALSE; } catch ( FileNotFoundException^ ){    return FALSE; } ・・・ のようなコードで期待動作をさせることが出来ました。 ただ、いくつかの例外を捕らえるには、 上記のようにcatch文を羅列させなければならないのでしょうか? 理想としては、正常にオープンできる以外の全ての例外の場合、 falseを返すようなコードをスマートに書きたいと思うのですが。。