餃子を食べるとき、何をつけますか?

初めまして。MS VisualStudio 2005を XPで使用しています
VB.netで新規に空のファイルを作成しようとして躓いてしまいました。
やりたい事は、現在の日時が名前になったファイルを作成し、書き込み可能メディアかどうかの判断し、書き込み不可能なメディアの場合処理を終了したいのです。

躓いたのは、ファイルが作れなかった時のエラー処理です。
Try
' hStream が閉じられることを保証するために Try ~ Finally を使用する
Try
' 指定したパスのファイルを作成する
hStream = System.IO.File.Create("C:\Hoge.txt")
Finally
' 作成時に返される FileStream を利用して閉じる
If Not hStream Is Nothing Then
hStream.Close()
End If
End Try
というのがサンプルであったので、自分なりに変更して下記のようにしました。

→ file_name = System.IO.File.Create(f_name)
If file_name Is Nothing Then
MessageBox.Show("やり直して下さい")
file_name.Close()
End If
→の行で「IOExceptionはハンドルされませんでした」とエラーが出ます
色々調べたのですがどう処理を書けばいいのか分かりません。
分かる方がおられましたら、アドバイスを下さい。

A 回答 (1件)

File.Createに失敗したらNothingが返るというのは,どこで得た情報でしょうか。


参考用の実装ソースを見ても,内部的にはFileStreamをnewしているだけですから,Nothingが返ることはあり得ません。
MSDN: File.Create メソッド (String) (System.IO)
http://msdn.microsoft.com/ja-jp/library/d62kzs03 …

失敗した場合に,その場で対応できるのであれば,Try - Catch構文で対処する必要があります。
対応できない場合は,対応できる層でCatchするようにします。

この回答への補足

参考にしたHPは下記のページです。
http://jeanne.wankuma.com/tips/vb.net/file/creat …

補足日時:2009/07/22 11:31
    • good
    • 0
この回答へのお礼

Yune-Kichi様ご回答ありがとうございます。
参考URLも見たのですが、returnValueに値が入った時点でエラーが出るのでどう処理したらいいのか分からなかったです。
if((fpi = fopen(outile,"rb"))==0){
return1;
}
みたいな書き方がVBにもあるのかと思ったのですが分からず困っていました。Yune-Kichiの教えて下さった「Try - Catch構文」なら何とか処理できそうなのでこれからきちんと読んでやってみます

お礼日時:2009/07/22 11:53

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


おすすめ情報