none
AccessViolationについて RRS feed

  • 質問

  • OS:Winodws7Professional / .NET Framework 4.0

    C#で開発を行っています。

    以下のAccessViolationException クラスのページに記載されている
    <legacyNullReferenceExceptionPolicy enabled = "1"/>
    についての質問です。

    http://msdn.microsoft.com/ja-jp/library/system.accessviolationexception(v=vs.100).aspx


    「解説」に記載されている内容がわからないので質問させてください

    アプリケーションの構成ファイルに
    <legacyNullReferenceExceptionPolicy enabled = "1"/>
    を追加すると、アンマネージ コード で発生した「AccessViolation」を
    「NullReferenceException 」として捕捉することができる。
    という解釈でよろしいですか?

    上記の解釈が正しければ、「AccessViolation」が発生し、
    アプリケーションが落ちてしまうような場合でも
    アプリケーションの構成ファイルに設定を追加するだけで
    「NullReferenceException 」を捕捉し、
    アプリケーションを継続することができる訳ですよね?

    以上、よろしくお願いします。

    2013年2月28日 1:12

回答

  • 解決しました。

    実際に試してみた結果、思っていた通りの動作をしました。

    catchできるようになりました。

    根本的な解決ではないですが、、、

    • 回答としてマーク Mamezou 2013年2月28日 8:30
    2013年2月28日 8:30

すべての返信

  • 解決しました。

    実際に試してみた結果、思っていた通りの動作をしました。

    catchできるようになりました。

    根本的な解決ではないですが、、、

    • 回答としてマーク Mamezou 2013年2月28日 8:30
    2013年2月28日 8:30
  • ご自身でも書かれていますが、AccessViolationException を直接、あるいは間接的に catch したところで意味がありません。
    その例外が発生すると言うことは、メモリの内容が想定とは異なる状態になっていることが予想されるため、今後実行されるコードはどうなるか誰にも予想できません。(例外が発生することで処理が中断していることもアプリの状態の不安定さを招きます)
    仮に例外を catch するとしても、すぐに終了、あるいは再起動を前提とするべきでしょう。

    2013年2月28日 13:42
    モデレータ