2009-11-17 4 views
5

오늘 일부 코드에서 예외가 발생했습니다. "[일부 예외] 처리되지 않았습니다.""try ... catch"블록의 코드가 처리되지 않은 예외를 throw 할 수 있습니까?

그러나이 코드는 분명 "try/catch"구조의 "try"블록 안에있었습니다.

무엇이 여기에 있습니까?

업데이트 : 그것은 C#

업데이트입니다 : 오, 그것을 잊지. 오류의 구체적인 메커니즘은 내가 바보라는 것입니다. 이 문제가 수정되지 않았습니다.

+3

사용중인 언어/프레임 워크는 무엇입니까? – stusmith

+0

몇 가지 코드를 게시 할 수 있습니까? –

+0

코드를 게시하면 문제를 진단하는 것이 더 쉬울 수도 있습니다. –

답변

5

catch 문이 특정 예외 유형을 지정합니까?

그렇다면 예외 유형 만 잡을 것입니다.

+0

나는 "Exception"을 잡는다. 그게 다에서 파생되지 않니? – Deane

+0

반드시 catch 블록에서 아무 것도 지정하지 않아도됩니다. –

2

"break on exceptions"/ "break on thrown"스위치가 켜져있는 디버거에서 실행 중이십니까? 이 경우 try/catch에 전달되기 전에 예외가 표시됩니다.

+0

이것은 디버거에있었습니다. 이것은 그럴 수 있습니다. Visual Studio에서 그 설정이 어딘가에 있습니까? – Deane

+0

예외가 생기면 계속 시도하고 try/catch로 들어갈 수 있습니까? 예외 설정은 일반적으로 "디버그 - 예외"에 있습니다. 언어에 따라 할 수있는 여러 가지 일이 있습니다. –

1

ThreadAbortException 또는 다른 자체 throw 예외를 말하는 10 달러가 있습니다. 이 경우 예외를 두 번 catch해야합니다.

0

언어를 알지 못해도 말하기 힘들지만 많은 언어에는 잡을 수없는 예외 개념이 있습니다. 예를 들어 .NET에서는 OutOfMemoryException과 ExecutionEngineException (다른 것들 중에서)은 복구 할 수 없으므로 잡을 수 없습니다 .

3

StackOverFlow 예외 등의 재귀로 인해 발생하는 일부 문제는 블록 내의 특정 코드 줄에서 실제로 throw되지 않기 때문에 try ... catch 블록 내부로 던져 지지만 CLR에서는 throw됩니다. 메모리 초과 범위 예외 및 한 줄의 코드로 인한 직접적인 결과가 아닌 기타 문제에 대해서도 마찬가지입니다.

alt text

4

캐치 (예외 전자)에 의해 체포되지 않습니다 관리되지 않는 예외, 당신은

try 
    { 
    } 
    catch 
    { 
    } 

을 시도 대신

수 있습니다

은 아마 당신은 이런 일에 대해 얘기하고
 try 
     { 
     } 
     catch (Exception e) 
     { 
     } 
관련 문제