최고의 예외 처리 관행 또는 권장 사항? [닫은]


12

내 프로그램의 두 가지 주요 문제는 코드 구조 / 구성 및 오류 처리라고 생각합니다. Code Complete 2를 읽고 있지만 잠재적 인 문제를 해결하려면 읽을 것이 필요합니다.

예를 들어, 웹 사이트에서 사용자가 자바 스크립트를 통해 데이터를 변조 한 경우에만 어떤 일이 발생할 수있는 경우이를 작성합니까? 또한 언제 오류를 잡지 않습니까? 문자열과 int를 입력으로 예상하고 문자열과 int가 아닌 클래스를 작성할 때이를 확인하거나 잘못된 매개 변수를 전달한 호출 메소드로 버블 링하도록합니까?

나는 이것이 단일 답변으로 대답 할 수없는 광범위한 주제라는 것을 알고 있으므로, 내가 찾고있는 것은 적절한 예외 처리 연습을 가르치는 것으로 일반적으로 받아 들여지는 책이나 자료입니다.


1
어떤 언어 및 개발 플랫폼을 사용하고 있습니까?
Yusubov 2016 년

1
"깨끗한 코드"는이 문제에 대해 좋은 장을 가지고 있다고 생각합니다.
Hoàng Long

@ElYusubov가 말한 것. 다루고있는 언어 / 플랫폼의 구현 세부 사항 및 표준은 모범 사례에 대해 많은 영향을 미칩니다.
vaughandroid

답변:


12

기억해야 할 좋은 점 중 하나는 예외 처리를 수행하는 것 when there is a need입니다.

.NET 개발 플랫폼의 경우 MSDN 지침 ( 예외 처리 모범 사례)을 따르고이 멋진 코드 프로젝트 기사 인 .NET의 예외 처리 모범 사례를 확인하십시오.

그러나 다음 지침은 대부분의 개발 플랫폼에 적용됩니다.

  • 예외없이 비즈니스 로직을 관리하지 마십시오. 대신 조건문을 사용하십시오. if-else 문으로 제어를 명확하게 수행 할 수있는 경우, 가독성 및 성능을 저하 시키므로 예외를 사용하지 마십시오 (예 : 널 제어, 0 제어로 나누기). .

  • 예외 이름은 명확하고 의미가 있어야하며 예외의 원인을 나타냅니다.

  • 메소드를 구현하는 동안 오류 조건에 대한 예외를 처리하십시오. 예를 들어 FileNotFoundException 대신 -1, -2, -3 등의 값을 반환하면 해당 메서드를 이해할 수 없습니다.

  • 최상위 예외 클래스 대신 특정 예외를 잡아라. 이를 통해 추가 성능, 가독성 및보다 구체적인 예외 처리가 가능합니다.

  • 조건부로 Null을 제어하는 ​​것은 NullPointerException을 잡는 것의 대안이 아닙니다. 메소드가 널을 리턴 할 수있는 경우 if-else 문으로 제어하십시오. 리턴 값이 NullPointerException을 발생시킬 수 있으면이를 포착하십시오.

  • 가격 때문에 예외를 다시 발생시키지 마십시오. 다시 던지는 것이 필수라면 새 예외를 만드는 대신 동일한 예외를 다시 던집니다. 추가 성능이 제공됩니다. 각 레이어에 해당 예외에 대한 추가 정보를 추가 할 수 있습니다.

  • 현재 예외 클래스 (예 : UserException, SystemException 및 해당 하위 유형)를 확장하여 고유 한 예외 계층 구조를 정의하고 사용하십시오. 이렇게하면 예외를 특수화하고 재사용 가능한 모듈 / 예외 계층을 정의 할 수 있습니다. 이 링크에서 더 많은


2
나는 당신의 5 번째 포인트 ( "조건부로 널 제어 ...")가 매우 명확하지 않다고 생각하지만 좋은 점입니다.
vaughandroid

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.