우리는 다음과 같은 형태 저장소 코드를 가지고 :예외 로깅
public class PieRepository
{
public void AddCherryPie(string incredientA)
{
try{
...
}
catch(Exception ex){
log("Error in AddCherryPie(" + incredientA + ")");
throw new Exception("Error in AddCherryPie(" + incredientA + ")", ex);
}
}
public void AddApplePie(string incredientA, string incredientB)
{
try{
...
}
catch(Exception ex){
log("Error in AddApplePie(" + incredientA + "," + incerdientB + ")");
throw new Exception("Error in AddApplePie(" + incredientA + "," + incredientB ")", ex);
}
}
}
그래서 try -> catch -> log -> throw new
이 저장소 방법과 프로젝트의 다른 중요한 방법의 대부분에 존재한다.
오늘 우리는 누군가가 이런 유형의 오류 처리를 제안한 적이 없으므로이 문제에 대해 논쟁을 벌였습니다. 그러나 주된 주장은 우리와 지원이 정확히 무슨 일이 일어 났는지를 알아야한다는 것과 다른 유형의 예외 처리가 필요 없다는 것입니다. 우리에게 정확히 이것을주지 마라. 누군가가 괜찮은지 말할 수 있겠는가?
편집 : 오류가 발생하면 원본 예외 메시지가 추가되었습니다.
코드는 예외를 catch 한 다음 사용하지 않고 유용한 디버그 정보를 포함하지 않는 새로운 예외를 throw합니다. StackTrace 등이 없으면 정확히 무슨 일이 일어 났는지 알 수 없으므로 '우리는 정확히 무슨 일이 일어 났는지 알 필요가 있습니다.'라는 주장은 의미가 없습니다. 적어도 어딘가에 예외를 기록한 다음 유용한 메시지를 사용자에게 제시해야합니다. – Equalsk
로그 측면에서 NLog 또는 다른 타사 솔루션을 사용할 수 있습니다 (NLog에 매우 만족합니다). – Tuco