2010-04-18 6 views
2

나는 젠드 프레임 워크와 함께 많은 일을하고 난 그냥 Kohana에 엿봄을 가지고 가고, 이것이 이러한 프레임 워크의 일반적인 시나리오입니다 홀수로 저를 친다 :이 많이되지 않을 것 생각PHP 커뮤니티가 더 자세한 설명을 사용하여 시작해야합니까?

throw Some_Components_Exception('invalid argument'); 

가 더 유용한 :

throw Some_Components_InvalidArgumentException('whatever discription'); 

잡기가 더 쉽기 때문입니다.

필자는 의심 스럽지만, 이전의 관행은 PHP 커뮤니티에서 일반적이라고 편견을 느끼는 것을 인정합니다. PHP 커뮤니티는 이러한 서술적인 유형의 expection을 더 사용해야합니까?

답변

3

예, SPL에서 제공하는 Exception 하위 유형을 사용하는 것이 좋습니다. 다른 유형의 예외를 다르게 처리하기 위해 프레임 워크 나 앱에서 코드를 호출 할 수 있습니다.

DomainException은 유효하지 않은 사용자 입력을 나타내며 사용자에게보고하고 데이터를 다시 입력 할 수있는 기회를 제공 할 수 있습니다. BadMethodCallException은 코드에 결함이 있음을 나타낼 수 있으므로이를 로그하고 다른 방식으로 처리해야합니다.

그러나 이러한 예외 시나리오는 예외를 발생시킨 클래스 나 구성 요소와 아무 관련이 없습니다. BadMethodCallException은 MVC 구성 요소 또는 DB 액세스 계층에서 발생하는지 여부와 유사하게 처리되어야합니다.

저는 1.0 릴리스를 통해 젠드 프레임 워크의 프로젝트 리더였습니다. 나는 예외 계층 구조를 재구성하기를 원했고 모든 구성 요소에 대해 단일 예외를 사용하는 것이 임의의 결정 (프로젝트에 참여하기 전에)이라고 생각했습니다. 그것은 말이되지 않았습니다.

예외를 다시 만드는 것은 1.0 릴리스 이정표로 제품을 출시하는 것만 큼 중요하지 않습니다. 젠드 (Zend)가 프로젝트를 위해 설정 한 스케줄에 우선 순위를 따라야했고, 실제로 그렇게하려면 기능 완전 릴리스에 도달하는 데 반드시 필요하지 않은 모든 사항을 연기해야했습니다.

+0

사용자 입력이 잘못되었으므로 잘못된 입력을해서는 안됩니다. – koen

+0

@koen : 그러나 상위 수준에서 유효성 검사가 수행되고 무효화 된 데이터가 도메인 모델에 전달되는 계층화 된 설치가있는 경우 IMO가 수행해야합니다. –

관련 문제