- 필수 기능
- 시작하기
- Glossary
- 표준 속성
- Guides
- Agent
- 통합
- 개방형텔레메트리
- 개발자
- Administrator's Guide
- API
- Datadog Mobile App
- CoScreen
- Cloudcraft
- 앱 내
- 서비스 관리
- 인프라스트럭처
- 애플리케이션 성능
- APM
- Continuous Profiler
- 스팬 시각화
- 데이터 스트림 모니터링
- 데이터 작업 모니터링
- 디지털 경험
- 소프트웨어 제공
- 보안
- AI Observability
- 로그 관리
- 관리
",t};e.buildCustomizationMenuUi=t;function n(e){let t='
",t}function s(e){let n=e.filter.currentValue||e.filter.defaultValue,t='${e.filter.label}
`,e.filter.options.forEach(s=>{let o=s.id===n;t+=``}),t+="${e.filter.label}
`,t+=`ID: csharp-best-practices/exception-constructors
Language: C#
Severity: Warning
Category: Best Practices
This rule stipulates that when creating a custom exception by inheriting from the Exception
class, all the constructors of the base Exception
class should be implemented. This is important because it ensures that your custom exception behaves consistently with the built-in exceptions in C#. By doing so, you provide more flexibility for the code that throws your exception, allowing it to pass along a message, an inner exception, or both, which can be extremely helpful when debugging.
Non-compliance with this rule can lead to unexpected behavior and make debugging difficult, as some information might not be propagated correctly when the exception is thrown.
To fix this rule always implement the following three constructors when creating a custom exception: a parameterless constructor, a constructor that takes a string message, and a constructor that takes a string message and an inner exception. For example:
public class MyException : Exception
{
public MyException() : base()
{
}
public MyException(string message) : base(message)
{
}
public MyException(string message, Exception innerException) : base(message, innerException)
{
}
}
By following this practice, you ensure that your custom exceptions can be used just like any other exceptions in C#.
public class MyException : Exception
{
}
public class MyException : Exception
{
public MyException() : base()
{
}
public MyException(string message) : base(message)
{
}
public MyException(string message, Exception innerException) : base(message, innerException)
{
}
}