나는 예외 이후에 오는 것에 대해 더 많은 대답을 할 것입니다 : 무엇이 좋으며 소프트웨어가 어떻게 행동 해야하는지, 사용자는 예외로 무엇을해야합니까? 경력 초기에 알게 된 훌륭한 기술은 항상 문제와 오류를 컨텍스트, 문제 및 솔루션의 세 부분으로보고하는 것입니다. 이 원칙을 사용하면 오류 처리가 엄청나게 바뀌고 운영자가 소프트웨어를 훨씬 더 잘 사용할 수 있습니다.
몇 가지 예가 있습니다.
Context: Saving connection pooling configuration changes to disk.
Problem: Write permission denied on file '/xxx/yyy'.
Solution: Grant write permission to the file.
이 경우 운영자는 수행 할 작업과 영향을받는 파일을 정확히 알고 있습니다. 또한 연결 풀링 변경이 수행되지 않았으며 반복되어야한다는 것을 알고 있습니다.
Context: Sending email to 'abc@xyz.com' regarding 'Blah'.
Problem: SMTP connection refused by server 'mail.xyz.com'.
Solution: Contact the mail server administrator to report a service problem. The email will be sent later. You may want to tell 'abc@xyz.com' about this problem.
서버 측 시스템을 작성하고 운영자는 일반적으로 기술에 정통한 1 차 지원입니다. 대상은 다르지만 동일한 정보를 포함하는 데스크탑 소프트웨어에 대해 다르게 메시지를 작성합니다.
이 기술을 사용하면 몇 가지 놀라운 일이 발생합니다. 소프트웨어 개발자는 종종 자신의 코드로 문제를 해결하는 방법을 아는 것이 가장 좋습니다. 따라서 코드를 작성할 때 이러한 방식으로 솔루션을 인코딩하면 솔루션을 찾는 데 어려움을 겪는 최종 사용자에게 정보가 누락되기 때문에 최종 사용자에게 큰 이점이됩니다 소프트웨어가 정확히 무엇을하고 있는지. Oracle 오류 메시지를 읽은 사람은 내가 무엇을 의미하는지 알게 될 것입니다.
두 번째로 놀라운 점은 예외에서 해결책을 설명하려고 시도하고 "X를 확인하고 A와 B가 다른 경우 C"라고 쓰는 경우입니다. 이것은 귀하의 예외가 잘못된 장소에서 점검되고 있다는 매우 분명하고 명백한 신호입니다. 프로그래머는 코드에서 사물을 비교할 수있는 능력이 있으므로 "if" 문을 코드에서 실행해야하는 이유는 무엇입니까? 코드가 더 깊어서 누군가가 게으른 일을하고 많은 수의 메소드에서 IOException을 발생시키고 호출 코드 블록에서 모든 메소드에서 잠재적 인 오류를 발견하여 어떤 일이 잘못되었는지, 구체적으로 무엇인지 설명 할 수 없습니다.상황과 해결 방법. 따라서 작업자가 취해야하는 단계를 올바르게 표현할 수 있도록 미세한 결점 오류를 작성하고 코드의 올바른 위치에서 오류를 포착하여 처리 할 수 있습니다.
한 회사에는 소프트웨어를 정말 잘 알고 있으며 오류보고 및 제안 된 솔루션을 강화한 자체 "실행 서적"을 유지 한 최고 수준의 운영자가있었습니다. 이를 인식하기 위해 소프트웨어는 예외적으로 런 북에 대한 위키 링크를 포함하여 기본 설명을 사용할 수 있었으며 시간이 지남에 따라 운영자의 고급 토론 및 관찰에 대한 링크를 제공했습니다.
이 기술을 시험해 볼 수있는 훈련을 받았다면 자신의 예외를 만들 때 코드에서 예외 이름을 지정 해야하는 것이 훨씬 더 분명해집니다. NonRecoverableConfigurationReadFailedException 은 연산자에 대해보다 자세하게 설명하려는 내용의 약어입니다. 나는 장황한 것을 좋아하며 내 코드를 만지는 다음 개발자가 해석하기가 더 쉬울 것이라고 생각합니다.