이 문제에 대해 더 숙련 된 개발자와 약간 의견이 다르며 다른 사람들이 이에 대해 어떻게 생각하는지 궁금합니다. 우리의 환경은 Java, EJB 3, 서비스 등입니다.
내가 작성한 코드는 물건을 얻고 물건을 만드는 서비스를 호출합니다. 내가 겪었던 문제는 의미가없는 null 포인터 예외가 있다는 것입니다. 예를 들어, 서비스에 객체 생성을 요청하면 null이 반환됩니다. 알려진 유효한 ID를 가진 객체를 찾으려고하면 null이 반환됩니다. 나는 내 코드에서 무엇이 잘못되었는지 알아 내려고 노력했다. 경험이 적기 때문에 일반적으로 내가 잘못한 것으로 가정하지만 null 반환의 이유는 보안이었습니다. 내 서비스를 사용하는 사용자 주체가 대상 서비스에 대한 올바른 권한을 가지고 있지 않은 경우 단순히 null을 반환합니다. 여기에있는 대부분의 다른 서비스는 잘 문서화되어 있지 않으므로 분명히 알아야 할 것입니다.
이는 서비스와 상호 작용하는 코드를 작성하는 개발자로서 혼동됩니다. 서비스가 사용자에게이 작업을로드하거나 해당 작업을 생성 할 수있는 적절한 권한이 없다는 것을 알려주는 예외가 있다면 훨씬 더 이해가 될 것입니다. 그런 다음 서비스가 예상대로 작동하지 않는 이유를 즉시 알 수있었습니다.
서비스를 작성한 숙련 된 개발자는 데이터를 요청하는 것은 오류 조건이 아니며 사용자가 데이터에 액세스 할 수없는 경우가 아니라 오류 조건에서만 예외를 처리해야한다고 주장했습니다. 이 데이터는 종종 GUI에서 조회되며 올바른 권한이없는 사용자의 경우 이러한 것들은 단순히 "존재하지 않습니다". 요컨대, 묻는 것은 잘못이 아니므로 예외는 아닙니다. 해당 사용자에게 "존재하지 않는"항목이 있으므로 Get 메소드는 널을 리턴합니다. 사용자가 해당 항목을 만들 수 없으면 Create 메서드는 null을 반환합니다.
이것이 정상적이거나 좋은 습관입니까? 나는 무슨 일이 일어나고 있는지 훨씬 쉽게 알기 때문에 예외를 사용하는 것을 선호합니다. 따라서 예를 들어 null을 반환하지 않고 잘못된 ID를 가진 객체를 요청한 경우 NotFoundException을 throw하는 것이 좋습니다.