- ベストアンサー
【C++/CLI】ファイルオープンに失敗した際のエラー処理
VC++2005の.NETで言語はC++/CLIにてアプリを作成しています。 FileStream^ fs; String^ file; fs = gcnew FileStream( file, FileMode::Open ); にてファイルをオープンする処理を入れたのですが、 ファイルが存在しない、もしくは何らかのエラー等で、 ファイルが正常に開けない場合のエラー処理は、 どのように判断させればよいのでしょうか? 方法をご存知の方おられましたら、参考例などご教示お願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
捕まえる方法は前に回答されている方々のやり方でよいと思いますが、そのままだと実際にどんな原因で失敗しているのかわからないのが問題になりませんか? 私ならデバック時だけでもわかるように以下のような記述をします。 try { fs = gcnew FileStream(file, FileMode::Open); } catch(Exception^ e) { System::Diagnostics::Debug::WriteLine(e->Message); return false; } 以上、参考までに・・・
その他の回答 (2)
- machongola
- ベストアンサー率60% (434/720)
こんばんは。 以下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; }
お礼
御回答ありがとうございます。 期待動作をさせることができました。
- D-Matsu
- ベストアンサー率45% (1080/2394)
try~catchで囲んで例外を見ましょう。 http://msdn.microsoft.com/ja-jp/library/47ek66wy(VS.80).aspx
補足
御回答ありがとうございます。 try{ fs = gcnew FileStream( file, FileMode::Open ); } catch ( ArgumentException^ ){ return FALSE; } catch ( FileNotFoundException^ ){ return FALSE; } ・・・ のようなコードで期待動作をさせることが出来ました。 ただ、いくつかの例外を捕らえるには、 上記のようにcatch文を羅列させなければならないのでしょうか? 理想としては、正常にオープンできる以外の全ての例外の場合、 falseを返すようなコードをスマートに書きたいと思うのですが。。
お礼
御回答ありがとうございます。 確かにエラー内容は分かったほうが良いですね。 ありがとうございました。