2011-01-06 2 views
2

기본 예외 클래스에서 파생 된 개체 인수가 catch 다음에 오는 경우이 예외 만 처리한다는 것을 알고 있습니다. 그러나 나는 왜 그 타입의 변수를 선언해야하는지 이해하지 못한다. "ex"또는 무엇이든. 나는 그것이 예외 객체로 "채워질 것"을 알지만 .. 단지 그것을 잘 얻지 못한다.예외 : catch (Exception ex) 질문

답변

7

에는 변수를 지정하는이 없습니다. 예를 들어, 당신은 쓸 수 있습니다 :

try 
{ 
    ... 
} 
catch (IOException) 
{ 
    // Do something 
} 

그러나 일반적으로 예외를 기록하거나 어떤 방법에 달려 일부 조치를 취할합니다. (로깅은 제 경험에서 예외 변수를 사용하는 가장 일반적인 방법입니다 - 또는 새로운 예외에 대한 "내부 예외"로 사용하는 것입니다.) catch 문에서 변수를 선언하는 것은 그렇게하는 방법입니다.

+0

@ 존 수표 : 감사합니다. 또한 인자로 타입을 사용하거나이 변수가 그 타입의 인스턴스로 설정되도록하는 변수를 사용할 수 있습니까? 전문 용어로 만 알면 되겠습니다.>] – Loj

+0

@Loj : 무슨 뜻인지는 분명치 않습니다. 당신이 방법을 부르지 않기 때문에 그것은 "논쟁"이 아닙니다. 그것은 catch 블록의 구문의 일부일뿐입니다. 자세한 내용은 사양을 살펴보십시오. –

+0

@ 존 Skeet :하지만 MSDN 사양 말합니다 : "catch 절을 인수없이 사용할 수있는 경우 모든 예외 유형을 catch하고 일반 catch 절이라고도합니다. 또한 System에서 파생 된 개체 인수를 취할 수 있습니다 .Exception 경우 특정 예외를 처리합니다. ".. 지금 혼란 스럽습니다. – Loj

0

잡힌 예외를 포함하도록 변수를 선언하지 않은 경우 던져진 예외 객체를 어떻게 분석 할 예정입니까?

비록 상관 없으면 신고하지 않아도됩니다. 그러나 일반적으로 당신이 그것을 가지고 뭔가를하고 싶을 때를 대비하여 좋은 생각입니다.

1

변수를 선언 할 필요가 없습니다. 이처럼이있을 수 있습니다

try 
{ 
    //something here... 
} 
catch (ThreadAbortException) 
{ 
    //handle only ThreadAbortException.. 
} 
0

당신이 그 예외

("Exception Message: {0}", ex.Message) or 

about inner exception, ex.InnerException; 
0

을 제외하고 자체, 가장 중요한 메시지 텍스트에 대한 정보가 포함됩니다 변수에 대한 자세한 정보를 찾을하는 데 사용할 수 있습니다.

예외를 catch하고 정리하고 종료하려면 해당 오류 메시지가 필요하지 않지만 일반적으로 사용자 또는 로그 파일에 실제 오류 메시지를 표시하려는 것이 좋습니다. 당신을 위해 채워집니다.

1
try { 
} 
catch(SQLException){ 
//do something not using exception info 
} 
catch(OtherException ex){ 
//do something else using exception info 
} 
catch(Exception ex){ 
//do something else 
Logger.Log(ex); 
} 
관련 문제