내 생각에 흥미가있는 쉬운 것 :리포지토리의 예외 사항 : 어떻게 처리합니까?
저장소 구현에서 저장소 내에서 예외를 던져서 호출자에게 예외 처리를 맡기를 원하십니까? 저장소 내부의 예외, 예외를 저장하고 false/null을 반환합니까?
내 생각에 흥미가있는 쉬운 것 :리포지토리의 예외 사항 : 어떻게 처리합니까?
저장소 구현에서 저장소 내에서 예외를 던져서 호출자에게 예외 처리를 맡기를 원하십니까? 저장소 내부의 예외, 예외를 저장하고 false/null을 반환합니까?
크기에 따라 다릅니다.
예외가 발생합니까? 전혀. 그러나 나는 연결 실패, 명령 실패에 이것을 원한다. 당신이 무엇을 하든지, 이것을 숨기지 말고, 그들에 대해 알아야합니다. 부작용과 추가 손상을 줄이기 위해 가능한 빨리 내 응용 프로그램을 실패하는 것이 좋습니다.
또한 예외를 기록합니다. Log4net을 사용하여이 문제를 해결합니다. 그러나 나는 출처에서 예외를 기록하고 싶다. 나는 그 (것)들이 거기에서 거품이 일게 할 것이다.
Return null? 무언가를 찾을 수 없거나 (즉, ID로 무언가를 찾고 거기에없는 경우), 예외가 아니라 null을 반환합니다. 그러나이 경우 새로운 예외가 발생하는 것을 볼 수 있습니다.
요점 : 예외는 규칙이 아니라 '예외적'이어야합니다. 예외가 던져지면 뭔가 잘못 되었기 때문에 예외를 수정해야합니다.
일반적으로 예외를 누설하도록합니다. 특히 Enterprisey 분위기에있는 경우 클라이언트를 기본 저장소 엔진에 대해 신경 쓰지 않게 RepositoryException에 래핑합니다.
예외 대신 이미 false/null을 반환하지 않습니다. 이미 그 값 뒤에 의미가 있기 때문에.
드문 경우이지만 비상용적 인 경우에 예외를 생성하는 뇌 기능이없는 저장소 엔진이있을 수 있습니다. 그 특정 항목을 잡아 내고 적절한 경우 null을 반환합니다 (예 : 행이없는 경우). 스토리지 엔진은이 경우에 오류를 던집니다. 나는 그것을 잡아서 null을 반환합니다.)
예, 예외적 인 경우와 관련된 오류 만 잡아 내고 있습니다. 저장소 내에서 예외를 발견하여 false를 반환하면 저장소 외부에서 오류를 잡아내는 것을 잊지 않고 궁극적으로 사용자 환경에서 동일한 결과를 얻을 수밖에 없었습니다. (내가 실수를 범하고 우아하게 실패했다고 가정) –
귀하의 요점은 매우 유효하다고 생각합니다. +1 –