개발 : 일부 매개 변수가 사용자 정의 개체 일 수있는 try catch 블록에서 webservice/other 메서드를 호출합니다. 예외가 발생할 경우 텍스트 파일에 매개 변수를 기록하는 가장 좋은 방법에 대해 의견을 말하십시오. 또한 객체에서 일부 필드를 생략 할 수 있습니다 시간호출 매개 변수를 로깅하는 가장 효율적인 방법 예외의 경우 메서드에 대해
답변
에 대한
덕분에 짧은 대답은 (객체가 이미지 나 텍스트 파일에 기록 할 해달라고 파일을 포함하는 경우, 예를 들어 말) 너는 농구를 지나는 것없이 할 수 없다.
예외가 발생하면 스택 추적 정보를 포함하지만 그 정보는 그 당시 메서드로 전달 된 매개 변수와 관련된 내용을 포함하지 않습니다.
이 문제를 해결하려면 예외 처리기 코드에 매개 변수를 저장해야 예외가 처리 될 때 매개 변수에 액세스 할 수 있습니다.
예를 들어 매개 변수 인스턴스를 이름과 함께 전달한 다음 해당 catch 블록에서 해당 개체에 대한 메서드를 호출 할 수 있습니다.
개체에 원하는대로 표시 한 to_string 메서드를 제공 할 수 있습니다. 영리 해지기를 원한다면 처음으로 전체 세부 사항을 제공하고 나중에 로그를 읽기가 어려워지기 전에 나중에 전체 버전으로 다시 참조 할 수도 있습니다.
레퍼런스로 사용하기에 좋은 이름이 없다면 "AxilWidget # 7"또는 "PendingWhackQueue # 14"와 같이 무언가를 할당하면됩니다.
이렇게하면 많은 경우에 로그를 훨씬 쉽게 읽을 수 있으며 루프를 사용하여 객체 구조를 재귀 적으로 직렬화하려는 경우 매우 중요합니다. 보고간에 개체가 크게 변경 될 수있는 경우 특별한주의를 기울여야합니다. 다시 말하면 참조가 포함 된 요약을 항상 포함해야합니다.
PostSharp을 살펴 보시기 바랍니다. 속성을 사용하여 특정 코드가 정상적인 메소드의 "주변"에서 실행되도록 선언 할 수 있습니다. 이 코드는 메소드에 대한 인수를 사용할 수 있으며 원래 코드에서 예외가 발생한 경우에만 기록 될 수 있습니다.
이런 종류의 교차 절단 문제는 AOP가 설계 한 것과 정확히 같습니다. PostSharp가 웹 서비스와 얼마나 잘 작동하는지 모르지만, 당신이 이것을 원한 첫 번째 사람이라고는 상상할 수 없습니다.
속성에 특성을 추가하여 건너 뛸 인수를 지정할 수 있습니다.
또한 C# –