나는이 문제를 잠시 동안 숙고하고 있으며 끊임없이 경고와 모순을 발견하고 있기 때문에 누군가 다음과 같은 결론을 내릴 수 있기를 바랍니다.
오류 코드보다 예외를 선호
내가 아는 한, 업계에서 4 년간 일하면서 책과 블로그를 읽는 등 오류를 처리하는 가장 좋은 방법은 오류 코드 (반드시 오류 코드가 아니라 반드시 오류를 나타내는 유형).
그러나 이것은 나에게 모순되는 것처럼 보입니다 ...
구현이 아닌 인터페이스 코딩
커플 링을 줄이기 위해 인터페이스 또는 추상화로 코딩합니다. 우리는 인터페이스의 특정 유형과 구현을 모르거나 알고 싶어합니다. 그렇다면 어떤 예외를 잡아야하는지 어떻게 알 수 있습니까? 구현시 10 가지의 예외가 발생하거나 전혀 발생하지 않을 수 있습니다. 확실하게 예외를 발견하면 구현에 대한 가정을하고 있습니까?
그렇지 않으면-인터페이스는 ...
예외 사양
일부 언어에서는 개발자가 특정 메소드가 특정 예외를 처리한다고 언급 할 수 있습니다 (예 : Java는 throws
키워드 사용 ). 호출 코드의 관점에서 보면 이것은 괜찮은 것 같습니다.
그러나-이것은 제안하는 것 같습니다 ...
새는 추상화
인터페이스에서 어떤 예외를 throw 할 수 있는지 지정해야하는 이유 구현에서 예외를 발생시킬 필요가 없거나 다른 예외를 발생시켜야하는 경우 어떻게해야합니까? 인터페이스 수준에서는 구현에서 어떤 예외를 throw할지 알 수있는 방법이 없습니다.
그래서...
결론적으로
소프트웨어 모범 사례와 모순되는 것처럼 예외가 선호되는 이유는 무엇입니까? 그리고 오류 코드가 너무 나쁘면 (그리고 오류 코드의 역으로 팔 필요가 없다면) 다른 대안이 있습니까? 위에서 설명한 모범 사례의 요구 사항을 충족하지만 오류 코드의 반환 값을 확인하는 호출 코드에 의존하지 않는 오류 처리에 대한 현재의 최신 상태는 무엇입니까?