사용자 지정 예외 디자인
다음 지침은 사용자 지정 예외를 올바로 디자인하는 데 도움이 됩니다.
예외 계층 구조는 되도록 단순하게 만듭니다.
자세한 내용은 형식 및 네임스페이스을 참조하십시오.
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.
}
}
public ref class NewException : BaseException, ISerializable
{
public:
NewException()
{
// Add implementation.
}
NewException(String^ message)
{
// Add implementation.
}
NewException(String^ message, Exception^ inner)
{
// Add implementation.
}
protected:
// This constructor is needed for serialization.
NewException(SerializationInfo info, StreamingContext context)
{
// Add implementation.
}
};
보안이 중요한 정보는 해당 권한을 요청한 후 System.Object.ToString을 재정의하여 보고합니다. 권한 요청이 실패하는 경우 보안이 중요한 정보가 포함되지 않은 문자열을 반환합니다.
보안이 중요한 유용한 정보는 개인 예외 상태로 저장하지 않습니다. 신뢰할 수 있는 코드만 정보를 가져올 수 있습니다.
메시지 문자열 외에도 예외와 관련된 추가 정보에 프로그래밍 방식으로 액세스하기 위한 예외 속성을 제공할 수 있습니다.
Portions Copyright 2005 Microsoft Corporation. All rights reserved.
Portions Copyright Addison-Wesley Corporation. All rights reserved.
디자인 지침에 자세한 내용은 참조를 "Framework 디자인 지침: 규칙, 숙어, 및 재사용에 대 한 패턴입니다.NET 라이브러리"도 서 Krzysztof Cwalina와 Brad Abrams, 게시 Addison-wesley, 2005.