2011-11-28 2 views
1

내 코드에서 예외를 사용하여 오류 처리를 전달하기로 결정했습니다. 나는 새로운 예외를 만들고 싶을 때마다 코드를 복제하는 자신을 발견했습니다. 이 수업은 특별한 것이 아니며 단지 메시지 만 포함되었습니다. 그러나 나는 그것을 건네 줄 때 타입 안전에 의존하게되었다. 생성자를 다시 구현하지 않고도 새로운 예외 클래스 유형을 제공 할 수 있습니까?사용자 지정 예외 및 중복 된 코드 줄이기

[Serializable] 
class MyNewException : MyBaseException 
{ 
    public MyNewException (String tMsg) 
     : base(tMsg) 
    { 
    } 

    public MyNewException (String tMsg, Exception tInnerEx) 
     : base(tMsg, tInnerEx) 
    { 
    } 
} 

위의 코드는 내가 정의 할 예외의 각기 다른 유형에 걸쳐 여러 번 중복됩니다.

+2

또한 serialization 생성자가 필요합니다. – SLaks

+0

[예외 디자인 가이드 라인] (http://msdn.microsoft.com/en-us/library/ms229014.aspx)을 참조하십시오. 사용자 지정 예외를 적게 사용하여 중복을 줄여야하는 이유를 알려줍니다. –

+0

호출자가 처리하려는 특정 조건에 대해 메서드가 예외를 throw하면 호출자가 해당 조건이 발생할 때를 제외하고 해당 형식의 예외를 가져올 수 없습니다. 이를 보장하려면 메서드가 그 내부에서 발생하는 해당 형식의 예외를 catch하고 catch 된 예외를 다른 형식으로 래핑하거나 중첩 된 메서드가 throw하지 않을 예외의 일부 형식을 throw해야합니다. 첫 번째 행동은 반 직관적 일 수 있습니다. 후자의 경우 더 많은 사용자 지정 예외가 필요합니다. – supercat

답변

1

아쉽게도 생성자는 상속되지 않으므로 제공해야합니다.

또한 이러한 특정 예외를 발견하고 명시 적으로 처리하는 경우가 아니면 필요한 추가 정보가 포함 된 일반 예외가있는 것이 좋습니다. 그러나 이는 귀하의 경우에는 적용되지 않을 수 있습니다.

+0

문맥을 신경 쓰지 않을 때 일반적인 예외가 있습니다. 내 기본 예외를 상속하는 많은 상황 별 예외가 있습니다. – MarkP

관련 문제