사용자 지정 예외 디자인
업데이트: 2007년 11월
다음 지침은 사용자 지정 예외를 올바로 디자인하는 데 도움이 됩니다.
예외 계층 구조는 되도록 단순하게 만듭니다.
자세한 내용은 형식 및 네임스페이스를 참조하십시오.
System.Exception 또는 다른 공통 기본 예외 중 하나에서 예외를 파생합니다.
표준 예외 형식 Catch 및 Throw에는 ApplicationException에서 사용자 지정 예외를 파생해서는 안 된다는 지침이 있습니다.
예외 클래스 이름 뒤에는 "Exception"을 붙입니다.
일관성 있는 명명 규칙은 새 라이브러리에 금방 익숙해질 수 있ㅋ도록 도와줍니다.
예외를 serialize할 수 있도록 만듭니다. 응용 프로그램 도메인과 원격 경계에서 예외가 올바르게 작동하려면 serialize할 수 있어야 합니다.
형식을 serialize할 수 있도록 만드는 방법은 Serialization을 참조하십시오.
모든 예외에 대해 최소한 다음 공통 생성자를 제공합니다. 매개 변수의 이름 및 형식이 다음 코드 예제에서 사용되는 이름 및 형식과 같은지 확인합니다.
Public Class NewException
Inherits BaseException
Implements ISerializable
Public Sub New()
MyBase.New()
' Add implementation.
End Sub
Public Sub New(ByVal message As String)
MyBase.New()
' Add implementation.
End Sub
Public Sub New(ByVal message As String, ByVal inner As Exception)
MyBase.New()
' Add implementation.
End Sub
' This constructor is needed for serialization.
Protected Sub New(ByVal info As SerializationInfo, ByVal context As StreamingContext)
MyBase.New()
' Add implementation.
End Sub
End Class
public class NewException : BaseException, ISerializable
{
public NewException()
{
// Add implementation.
}
public NewException(string message)
{
// Add implementation.
}
public NewException(string message, Exception inner)
{
// Add implementation.
}
// This constructor is needed for serialization.
protected NewException(SerializationInfo info, StreamingContext context)
{
// Add implementation.
}
}
메시지 문자열 외에도 예외와 관련된 추가 정보에 프로그래밍 방식으로 액세스하기 위한 예외 속성을 제공할 수 있습니다.
Portions Copyright 2005 Microsoft Corporation. All rights reserved.
Portions Copyright Addison-Wesley Corporation. All rights reserved.
디자인 지침에 대한 자세한 내용은 2005년에 Addison-Wesley에서 책으로 출간한 Krzysztof Cwalina와 Brad Abrams의 "Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries"를 참조하십시오.