처리되지 않는 경우 무시할 수있는 예외를 어떻게 throw합니까?
매개 변수가 null이 아닌지 확인하고 싶다고 가정 해 보겠습니다.
if (param == null)
{
throw new ArgumentException("Param is null!");
// if the exception isn't handled in the calling code, just return
}
null 매개 변수가 전달되면 해당 메서드를 호출하는 코드를 엉망으로 만들고 싶지 않습니다. 그러나 나는 그것을 사용하는 사람이 예외를 처리하는 경우를 대비하여 여전히 예외를 던지고 싶습니다.
나는 어떻게 든 "rethrows"를 사용하는 것에 대해 생각했지만 그것이 작동하지 않을 것이라고 생각합니다.
계약과 같은 것으로 더 잘 할 수 있습니까?
수행하려는 작업을 처리하는 방법에는 두 가지가 있습니다.
예외를 던지지 마십시오. 대신 부작용없이 돌아 오십시오. 물론 방법의 목적에 따라 불가능할 수도 있습니다.
예외를 던지면서 문서에서 명확하게 만드십시오.
그런 다음 예외를 처리할지 아니면 버블 링 할지를 결정하는 것은 호출자에게 달려 있습니다.
예외를 던지고 아무도 처리하지 않으면 코드를 호출하는 모든 것이 충돌합니다. 이는 브레이킹 체인지로 간주 될 수 있으며 행동에있어서 환영 할만한 변화가 아닐 수 있습니다.
일반적인 경험 법칙은 예외 만 던져야한다는 것입니다.
null 매개 변수 값이 없이는 작동 할 수 없기 때문에 정말로 중요한 경우 예외도 중요하며 호출자는이를 무시해서는 안됩니다. null 인수가 중요하지 않은 경우 예외를 throw하지 말고 대신 효과적으로 null / 빈 / 중립 응답을 반환해야합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다