2017-01-16 5 views
1

막연한 제목을 위해 죄송합니다.메서드 또는 호출 메서드에서 예외 예외 발생

궁금하고이 같은 시나리오에서 할 수있는 최선은 무엇인가 :

$template = $loader->load('file'); 

if (!$template) { 
    throw new \Exception('my custom exception'); 
} 

이는 $loader->loader() 방법에 예외를 다음과 같이 유지, 또는 실제로 던져 더 좋을까요?

예와 같이 실제로 예외가 발생하는 경우 항상 예외가 발생하는 메서드를 클릭하면됩니다. 따라서 예외가 스택 추적 위로 올라갈 실제 이유가 없습니다.

의견이 있으십니까? 왜 메소드가 실제로 예외를 구현하도록 할 수있을 때 스택 추적 위로 예외를 잡을까요?

+1

상황에 따라 다릅니다. 예를 들어 파일을 찾을 수 없다는 예외가 발생하면 load 메소드 내에서 throw해야합니다. 외부 범위와 관련이 있다면 외부 범위 등에서 던져야합니다. –

+0

@ patryk-uszynski True이지만 줄은 흐릿합니다. 나는 그것이 언제 '바깥 쪽 범위'를 가리킬 것인지를 의미합니다. 두 경우 모두 외부 범위가 관련되어 있기 때문입니다. 나는 이것에 대한 분명한 해답이 없다고 생각한다. 나는 사람들의 생각을 듣고 싶기 때문에 게시했다. 읽어 주셔서 감사합니다! –

답변

-1

제 생각에는 방법이 계약서 또는 죽어야합니다. 오브젝트를 입력으로 얻을 때마다 오브젝트가 NULL인지 아니면 유효한 오브젝트 참조인지를 확인해야합니다. 확인을 잊어 버린 경우 NullPointerException은 런타임에 실행을 중단시킬 수 있습니다. 따라서 위에서 설명한 것처럼 여러 가지 검사와 if/then/else 포크로 인해 논리가 오염됩니다.

null이 좋지 않은 이유는 무엇입니까? there