던지기 System.Exception
가 그렇게 나쁘다고 여겨 지면 왜 처음부터 Exception
만들어 지지 않았 abstract
습니까?
그렇게하면 전화를 걸 수 없습니다.
throw new Exception("Error occurred.");
이렇게하면 파생 된 예외를 사용하여 발생한 오류에 대한 자세한 정보가 제공됩니다.
예를 들어 라이브러리에 사용자 정의 예외 계층을 제공하려는 경우 일반적으로 예외에 대한 추상 기본 클래스를 선언합니다.
public abstract class CustomExceptionBase : Exception
{
/* some stuff here */
}
그리고 더 구체적인 목적을 가진 일부 파생 예외가 있습니다.
public class DerivedCustomException : CustomExceptionBase
{
/* some more specific stuff here */
}
그런 다음 라이브러리 메소드를 호출 할 때 라이브러리에서 오는 오류를 직접 잡기 위해이 일반적인 try / catch 블록을 가질 수 있습니다.
try
{
/* library calls here */
}
catch (CustomExceptionBase ex)
{
/* exception handling */
}
이것이 좋은 습관입니까?
Exception
추상적이게 되면 좋을까요?
편집 : 내 요점은 예외 클래스가 표시 abstract
되어도 여전히 모든 블록에서 잡을 수 있다는 것입니다. 이를 추상화하는 것은 프로그래머가 "슈퍼 와이드"예외를 던지지 못하게하는 방법 일뿐입니다. 일반적으로 자발적으로 예외를 던질 때 어떤 유형과 예외가 발생했는지 알아야합니다. 따라서 좀 더 구체적인 예외 유형을 던져야합니다.