Java 및 .NET에서 예외로 작업하고 예외를 잡는 방법 /시기 / 이유에 대한 많은 기사를 읽은 후 잠재적 예외가 발생할 때마다 다음 단계를 거쳐야했습니다. 예외는 발생하지 않더라도 (Java)를 잡아야합니다 (한숨 ...). 그리고 그것은 적어도 나를 위해 작동하는 것 같습니다.
- 그 예외로 로깅 할 수있는 것을 제외하고 유용한 것이 있습니까? 대답이 예이면 해결 방법 코드를 작성하고 해결 방법으로 예외가 발생할 수있는 경우 2로 이동하십시오.
- 예외를 런타임 예외로 감싸서 던져서 3으로 이동하십시오.
- 가능한 데이터베이스 / 프로세스 트랜잭션이 시작된 상위 레벨 클래스에서 예외를 포착하고 트랜잭션을 롤백하고 예외를 다시 발생 시키십시오.
- 최상위 클래스 (트랜잭션이 시작된 클래스 일 수 있음)에서 slf4j ( 예 : log4j 와 결합 된 ) 또는 log4net 과 같은 로깅 프레임 워크를 사용하여 예외를 로깅하십시오 . 가능하면 응용 프로그램 개발자로 구성된 메일 그룹에 예외를 직접 전자 메일로 보내십시오.
- GUI가있는 경우 가장 사용자 친화적 인 방식으로 문제의 원인을 나타내는 오류 메시지를 표시하십시오. 예외 / 스택 추적을 표시하지 않으면 사용자는 신경 쓰지 않으며 NullPointerException인지 알 필요가 없습니다.
또한 데이터 오류로 인해 복잡한 처리를 실행할 수 없을 때 의도적으로 "비즈니스"예외 ( "예외"클래스를 확장하여 생성 한 새로운 예외)를 던지는 단계 0을 추가해야 합니다. 분석 중에 예외 사례로 확인 된 것으로 알려져 있습니다.
벌목 부분을 제외하고, 나는 "mikera"의 글에 전적으로 동의합니다. 예외를 한 번만 기록 해야한다고 덧붙 입니다.
또한 작성중인 내용이 API / 프레임 워크 인 경우 나열된 단계가 다를 수 있습니다 . 거기에서 개발자가 실수를 이해하도록 돕기 위해 잘 설계된 예외를 던지는 것이 필수적입니다.
예외 테스트의 경우, 모의 객체를 사용하면 클래스가 "한 가지 일을하는 하나의 클래스"모범 사례를 존중하는 경우 예외 여부와 상관없이 거의 모든 것을 테스트 할 수 있어야합니다. 또한 개인적으로 가장 중요하지만 숨겨진 방법을 "개인"대신 "보호"로 표시하여 너무 번거 로움없이 테스트 할 수 있도록합니다. 그 외에도 예외 테스트는 간단합니다. 예외를 유발하고 예외를 잡아서 예외를 "예상"하십시오. 예외가 발생하지 않으면 단위 테스트 사례 오류가있는 것입니다.