검색결과 리스트
AccessViolationException에 해당되는 글 1건
- 2016.01.22 [.NET] AccessViolationException 예외 잡기 (1)
AccessViolationException 예외는 네이티브 쪽에서 메모리 접근 위반을 했을 때 발생 하는 예외 이다.
할당되지 않은 메모리 또는 코드가 접근 권을 갖지 않는 메모리를 읽거나 쓰기를 시도하면 네이티브 코드(언 세이프 코드)에서 액세스 위반이 발생한다.
그러나 보통 System.Exception의 파생 클래스인 셈이라서 catch에서 이 예외를 포착할 것으로 생각하지만 애플리케이션은 이 예외를 잡지 못해서 이상 종료를 한다.
.NET Framework 3.5 이전에는 AccessViolationException을 catch 할 수 있었지만 .NET Framework 4 이후에서는 못하도록 바뀌었다.
이 예외를 잡고 싶다면 두 가지 방법을 하나를 하면 된다.
1. HandleProcessCorruptedStateExceptionsAttribute
AccessViolationException을 catch 하고 싶은 메소드에HandleProcessCorruptedStateExceptionsAttribute를 붙여서 잡을 수 있다.
[HandleProcessCorruptedStateExceptions]
void DoSomething()
{
try {
AccessViolationException를 발생하는();
} catch(AccessViolationException e) {
//---포착 가능
}
}
2.legacyCorruptedStateExceptionsPolicy
하위 호환성 때문에 기존(.NET Framework 3.5 이전)처럼 애플리케이션 전체에서 포착할 수 있도록 하고 싶은 경우. 구성 파일(*. config)에<legacyCorruptedStateExceptionsPolicy>요소를 넣어서 해결할 수 있다.
<configuration>
<runtime>
<legacyCorruptedStateExceptionsPolicy enabled="true"/>
</runtime>
</configuration>
출처: http://blog.xin9le.net/entry/2015/07/22/053738
댓글
퍼가겠습니다!!