.NET에서 탐지할 수 없는 예외 목록
.NET에서 포착할 수 없는 예외 목록은 무엇입니까?아니면 어디서 그런 목록을 찾을 수 있습니까?
직접 탐지할 수 없는 유일한 예외는 (프레임워크가 던져지는) StackOverflow입니다.예외.스택에 해당 시점의 예외를 처리할 공간이 없기 때문에 논리적으로 타당합니다.문서에서:
.NET Framework 버전 2.0부터 시작되는 스택 오버플로예외 개체는 시도-캐치 블록에 의해 탐지될 수 없으며 해당 프로세스는 기본적으로 종료됩니다.
ThreadAbortException은 탐지될 수 있지만 항상 다시 발생하므로 고유한 동작이 있습니다.문서에서:
ThreadAbortException은 포착할 수 있는 특수 예외이지만 캐치 블록 끝에서 자동으로 다시 상승합니다.
일부는 다음과 같습니다.AccessViolationException인스턴스는 손상된 상태 예외이며 기본적으로 처리되지 않을 수 있습니다.이러한 작업은 처리할 수 있지만 속성을 통한 추가 처리가 필요합니다.자세한 내용은 손상된 상태 예외 처리를 참조하십시오.
NullReferenceException확실히 잡힐 수 있습니다.그 아이디어는 어디서 났습니까?
A try {} catch {}뿐만 아니라 되지 않는 ).catch).
잡을 수 없는 유일한 것은StackOverflowException,그리고.TreadAbortException캐치가 끝날 때 다시 던져집니다.
참고:
ThreadAbortException은 포착할 수 있는 특수 예외이지만 캐치 블록 끝에서 자동으로 다시 상승합니다.이 예외가 발생하면 런타임은 스레드를 종료하기 전에 마지막으로 모든 블록을 실행합니다.
어떤 예외들은 여러분이 그것들을 잡더라도 항상 다시 던져질 것입니다. StackOverflowException이 안 하을내 atm 할수생는있유일것한입다니아마도지각가. ▁is마아.ThreadAbortedException.
해보세요...(.NET Core 2.0에서 테스트됨)
System.Runtime.Serialization.FormatterServices.GetUninitializedObject(typeof(Type).GetType()).ToString()
A System.ExecutionEngineException모든 시도/캐치/마지막으로 블록을 무시하는 것은 느려지지만 런타임이 더 이상 이러한 유형의 예외를 던지지 않는다고 말하는 것은 더 이상 권장되지 않습니다.
이그는아마도유일 것입니다.typeof(Type).GetType()아온다를 합니다.typeof(System.RuntimeType)이는 내부 유형 및 런타임 고유입니다.음에의한인있습다니에 의한 인수 .System.Runtime.Serialization.FormatterServices.GetUninitializedObject▁▁types하와 같은 이러한 유형에 .typeof(string)하지만 개발자들은 아마도 이 비공개 유형을 확인하는 것을 잊어버렸을 것입니다. 결으로적, 는환자입니다.System.RuntimeType반환됩니다.언제ToString이 호출되면 잘못된 상태로 인해 런타임이 중단됩니다.
접근성 때문에 유형별로 참조할 수 없는 예외는 명시적으로 탐지할 수 없지만 기본을 사용하여 탐지할 수 있습니다.Exception유형.
예를 들어, aContractException코드 계약 프레임워크에서 의도적으로 만들어집니다.internal명시적으로 잡으려고 시도할 수 없도록 어셈블리에 연결합니다.
나는 당신이 왜 언급했는지 모르겠습니다.NullReferenceExceptions.NullReferenceExceptions주요 예외 중 하나입니다.내가 머리에서 떠올릴 수 있는 유일한 것은 메모리 부족 예외 또는StackOverflow메모리가 부족하면 실행이 중지되므로 예외가 탐지되지 않을 가능성이 높습니다.
경우에 따라 SEHE 예외가 탐지될 수 없습니다.관리되지 않는 코드에 의해 느려질 수 있습니다.이 주제에 대한 훌륭한 SO 스레드가 여기에 표시됩니다. SEHE 예외가 Try/Catch에 의해 감지되지 않음
언급URL : https://stackoverflow.com/questions/7392783/list-of-exceptions-that-cant-be-caught-in-net
'codememo' 카테고리의 다른 글
| 가장 가까운 10(또는 100 또는 X)까지 반올림하는 방법은 무엇입니까? (0) | 2023.06.22 |
|---|---|
| printf를 통해 이진수를 인쇄하는 방법 (0) | 2023.06.22 |
| MS SQL Server에서 테이블을 다른 파일 그룹으로 이동하려면 어떻게 해야 합니까? (0) | 2023.06.22 |
| Mongoose/Mongodb: 채워진 쿼리 데이터에서 필드 제외 (0) | 2023.06.22 |
| 유형 스크립트 TS5042 빌드: 옵션 'project'는 명령줄에서 소스 파일과 혼합할 수 없습니다. (0) | 2023.06.22 |