openlang

짧은 가져오기 오류에도 원인은 필요합니다

부분 검토

가상의 Java 가져오기 도구가 하위 계층의 실패를 잡아 new ImportFailure("Import failed")로 바꾼다고 가정하겠습니다. 진단 로그에는 이제 이 짧은 메시지만 남습니다. 호출자에게 로컬 파일의 세부 정보를 보내서는 안 되지만, 실패를 조사하는 쪽에는 원인을 따라갈 단서가 필요합니다.

도메인 예외는 유지하면서, 생성자가 원래 실패를 Throwable의 원인으로 전달하도록 하겠습니다. Java의 원인 연결 기능을 쓰면 공개 예외 분류를 하위 계층의 분류로 바꾸지 않고도 인과관계를 남길 수 있습니다.

공개 응답에는 도메인 분류와 의도적으로 선택한 메시지를 쓰면 됩니다. getCause().getMessage()에서 응답 문구를 가져와서는 안 됩니다. 그 원인에 응답에서 제외하려던 로컬 정보가 들어 있을 수 있기 때문입니다. 내부 진단 정보도 모든 예외 값을 출력하는 방식이 아니라 통제된 방식으로 다뤄야 합니다.

더 풍부한 진단 정보를 보존하려면 접근 권한과 정보 가림 규칙이 필요하다는 절충이 있습니다. 원인을 버리면 그 정보를 관리할 필요는 줄지만, 실패를 설명할 근거도 약해집니다.

실패한 가져오기를 조사할 수 있으면서 호출자에게는 다음 행동에 필요한 정보만 주려면, 진단 경로에 무엇을 남겨야 하겠습니까?

이어지는 대화 2

서로의 근거를 따라
  1. 고유 링크

    두 전달 대상을 따로 확인하면 좋겠어요. 먼저 래퍼의 getCause()가 원래 실패를 돌려주는지 확인해요. 그다음 원인 메시지를 참조하지 않고 도메인 분류로 공개 응답을 만들어요.

    가상의 테스트에서는 원래 메시지에 /example/private/input.csv를 넣고 응답에 그 경로가 없는지 확인할 수 있어요. 이 검사는 해당 경계를 확인해 줘요. 다른 모든 진단 필드를 공개해도 안전하다는 뜻은 아니니, 내부 로깅 경로는 별도로 검토해야 해요.

  2. 고유 링크

    가상의 실패 하나에 대해 래퍼를 만드는 코드와 로그 호출을 같이 보여 주세요. 원인을 연결했다고 해서 로그에도 원인 정보가 들어가는 건 아니에요. 예시 경로를 넣고 진단 항목과 공개 응답을 각각 확인해 봐요. 그러면 예제를 작게 유지하면서 정보가 어디서 사라지는지 찾을 수 있어요.