none
C#でErr.Numberを使いたい RRS feed

  • 質問

  • VB.NETでエラーが発生したときに
    catch文の中で
    Err.NumberというのでOSなどの返してくるエラー番号を取得していました。

    これをC#に移植したところ、
    Errが使えなくなりました。
    Information.Errというのを使うと
    Errはメソッドであり、エラー番号が取得できないというえらーになります

    今までのように
    エラー番号を取得するにはどうしたらいいでしょう
    2007年12月6日 8:59

すべての返信

  • いちろう さん、こんにちは

    ダッチです。

     

     いちろう さんからの引用
    Errはメソッドであり、エラー番号が取得できないというえらーになります
    どのようにコーディングしていますか?

    多分、Err の後ろに () をつけていないのが原因だと思います。

    C# ではメソッドを使用する際は必ず () が必要です。

    このようにすれば Err オブジェクトにアクセスできます。

     Microsoft.VisualBasic.Information.Err().Number

     

    ただ例外が発生したときに Err オブジェクトが空になっていると思います。

    この原因がちょっとわからなかったのですが、自分で Err.Raise しているのであれば問題ありませんでした。

     

    それと少し気になったのですが、なぜ Err オブジェクトを使用しているのかということです。

    .NET Framework を使用する際は 例外クラス(Exception)を使用するのが一般的です。

    差し支えなければ教えていただけないでしょうか?
    2007年12月6日 13:32
  • それと少し気になったのですが、なぜ Err オブジェクトを使用しているのかということです。

    .NET Framework を使用する際は 例外クラス(Exception)を使用するのが一般的です。

    差し支えなければ教えていただけないでしょうか?



    返答ありがとうございます。
    エラーが発生した場合に、システム内部で発生するエラーコードが知りたいためです。
    Exceptionではエラーの発生した文字列は取得できるのですが、
    コードが取得できないのでERRオブジェクトを使用していました。

    ステップ実行すると、パブリックではないメンバというところにエラーコードらしきものは入っているのですが、
    それの取得方法がわかりませんでした。
    2007年12月7日 7:43
  • 例外クラスを示すクラス名が、エラーコードに該当します。

    エラーコードで管理しても結局、そのエラーコードが何を示しているのかわかっていないと意味がありません。

    そういう意味では逆行しているような気がします。
    (業務アプリケーション上のエラーコードは除きます)


    反論する人の多くはそう言うと思います。

    2007年12月7日 8:38