- 필수 기능
- 시작하기
- Glossary
- 표준 속성
- Guides
- Agent
- 통합
- 개방형텔레메트리
- 개발자
- Administrator's Guide
- API
- Datadog Mobile App
- CoScreen
- Cloudcraft
- 앱 내
- 서비스 관리
- 인프라스트럭처
- 애플리케이션 성능
- APM
- Continuous Profiler
- 스팬 시각화
- 데이터 스트림 모니터링
- 데이터 작업 모니터링
- 디지털 경험
- 소프트웨어 제공
- 보안
- AI Observability
- 로그 관리
- 관리
ID: csharp-best-practices/do-not-rethrow
Language: C#
Severity: Warning
Category: Best Practices
The rule “Do not rethrow exception” advises against rethrowing an exception using the throw ex;
syntax. This practice is discouraged because it resets the stack trace of the original exception to the current catch block, which can lead to loss of valuable debugging information.
The importance of this rule lies in maintaining the integrity of exception stack traces. These traces provide crucial information about the sequence of method calls that led to the exception, making it easier to locate and fix the source of the error.
To fix this issue, use the throw;
statement without an exception object in catch blocks to rethrow the original exception while preserving its stack trace. For example, replace throw ex;
with just throw;
. This ensures that the original exception’s stack trace is maintained and aids in effective debugging.
class Foo {
public void Bar() {
try {
myMethod();
}
catch (Exception ex)
{
throw ex;
}
catch (Exception ex2)
{
if (foo) {
throw ex2;
}
}
}
}
class Foo {
public void Bar() {
try {
myMethod();
}
catch (Exception ex)
{
throw;
}
}
}
|
|
For more information, please read the Code Security documentation
Identify code vulnerabilities directly in yourVS Code editor
Identify code vulnerabilities directly inJetBrains products