문제

내가 요청한 예외를 던지는 코드를 작성할 때 여기, 나는 메시지가 끝날 무렵에 와서 구두점에서 잠시 멈췄다. 나는 내가 던진 거의 모든 예외 메시지가 아마도 어딘가에.

throw new InvalidOperationException("I'm not configured correctly!");
throw new ArgumentNullException("You passed a null!");
throw new StupidUserException("You can't divide by 0!  What the hell were you THINKING???  DUMMY!!!!!");

예외 메시지를 작성할 때 어떤 톤을 취합니까? 로그를 통과 할 때 특정 스타일의 메시지가 실제로 다른 것보다 더 도움이됩니까?

도움이 되었습니까?

해결책

시스템 메시지의 대화 톤은 소프트웨어를 비전문적이고 조잡하게 보이게 만듭니다. 느낌표, 모욕 및 속어에는 실제로 광택이있는 예외 메시지가 없습니다.

또한 런타임 예외는 실수를 저지른 프로그래머에게 해결되기 때문에 런타임 예외와 검사 예외에 대해 Java에서 다른 스타일을 사용하는 경향이 있습니다. 런타임 예외는 최종 사용자에게 표시 될 수 있으므로 여전히 "깨끗하게 유지"하지만 조금 더 간결하고 비밀스러운 일 수 있습니다. 확인 된 예외 메시지는 사용자가 문제를 설명하면 문제를 해결할 수 있기 때문에 더 도움이되어야합니다 (예 : 파일 찾기, 디스크 가득 차, 호스트로가는 경로 등).

정보의 예외에 대한 특정 필드가 없을 때 도움이되는 한 가지는 불쾌한 데이터입니다.

throw new IndexOutOfBoundsException("offset < 0: " + off);

다른 팁

사실 문제입니다. 디버깅 할 때 필요한 모든 정보를 포함 시키지만 그 이상은 포함하지 않습니다.

예외 메시지에 느낌표를 포함시키는 유일한 시간은 실제로, 정말 기괴한 일이 일어났다는 것을 나타냅니다. 대부분의 오류 그렇지 않습니다 실제로 기괴한, 잘못된 환경, 사용자 오류 또는 간단한 프로그래밍 실수의 제품입니다.

나는 코딩하는 프레임 워크의 톤, 문법 및 구두점 스타일을 반영하려고 노력합니다. 이러한 메시지 중 하나가 실제로 클라이언트 또는 사용자 앞에서 어떤 메시지를 만들 수 있는지 알 수 없으므로 모든 것을 전문적이고 판단력이없고 문제 해결에 충분히 구체적으로 유지합니다. 암호.

나는 단위 테스트에서 (Ocasionally)를 제외하고 전염병과 같은 모든 문자열 (UI 및 예외)에서 느낌표를 피합니다.

실제로 사용자의 잘못이었을 때에도 책임을지는 것이 내가 본 최선의 선택입니다.

"당신이 원하는 파일을 찾을 수 없습니다. 내가 올바르게 가지고 있는지 확인 하시겠습니까?" 또는 "뭔가 잘못되었다. Dunno what, 그러나 내가 고칠 수있는 유일한 방법은 멈추는 것입니다. 다시 시작하십시오."

간결하고 상세하고 작은 중복 정보 (즉, ArgumentNullexception은 분명히 널과 관련이 있음).

하지만 여기에 내가 한동안 읽은 최고가 있습니다. 이것.

나는 느낌표를 너무 많이 사용하지 않을 것입니다. 그들은 너무 많이 표현하고 "드라이브에 디스크가 없다"는 사실에 대해 생각합니다. "Drive You Crazy 사용자의 디스크 없음"으로 읽을 수 있습니다. ;)

국제화 된 텍스트를 포함하는 예외를 던지는 것이 현명하다고 생각합니다. 누가 코드를 사용하는지 알지 못하고 예외를 잡고 텍스트를 사용자에게 표시합니다. 그래서 그것은 다음과 같습니다.

throw new MagicalException(getText("magical.exception.text"));

또한 던질 때 기본 예외 (있는 경우)를 포장하는 것이 좋습니다. 실제로 디버깅에 도움이됩니다.

사용자가 런타임 예외를 보지 못한다고 생각하지 마십시오. 파일 appender에 로그인하는 경우 호기심 많은 사용자가 로그를 열고 엿볼 수 있습니다. 더러운 비밀.

가장 유용한 메시지가 제공합니다.

  • 일관된 형식 그것은 그들이 당신에게 말하는 것을 쉽게 이해할 수있게합니다.
  • 타임 스탬프, 따라서 프로그램의 역학에 대한 느낌을 얻을 수 있습니다.
  • 간결한 요약 오류의. 기술 지원을 제공하는 경우 an을 추가하십시오 에러 코드 빠른 식별을 위해.
  • an 무엇이 잘못되었는지에 대한 설명, an을 차별화합니다 잘못된 사용자 입력 그리고 a 코딩 오류.
  • 자세한 정보, 포함하는 코드 라인 또는 가치 관련된.

그리고 가장 중요한 :

  • 그들은 사용자에게 문제를 해결하는 방법을 알려줍니다.

예시:

Error 203 (Timeout) in commit.c line 42:
Unable to save salary data for user 'Linus' to database at '10.10.1.21'
after 1500ms.  Verify database address and login credentials.

배우기 가장 어려운 교훈 중 하나는 사용자가 코드의 내부에 관심이 적다는 것입니다. 일을 끝내기. 가능한 한 쉽게 작업을 수행 할 수있게되면 소프트웨어에 엄청난 가치를 추가했습니다.

예외 메시지를 예외 자체로 작동시키는 경향이 있습니다. 예 : file_not_found는 "파일을 찾을 수 없음"이라고 말해야합니다. 특정 데이터는 사용자가 파악할 수없는 경우에만 포함되어야합니다. 이 경우 사용자는 파일 이름을 알고 있으므로 해당 데이터를 추가하지 않습니다. 필요한 경우 정보를 출력하여 서식을 수행 할 수 있으므로 가능한 한 개혁에 친절하게 정보를 제공하려고합니다.

공손하고 간결하며 단순하고 구체적입니다. 메시지에 상태 값을 포함하는 경우가 종종 도움이됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top