2009-09-16 3 views
2

가이 같은 '전달자'로 예외 핸들러를 정의하는 것은 의미가 않습니다 감안할 때 동일한 코드 반복을 피하기 위해 예외를 처리하기 위해 이미 존재하는 오류 처리기. 예외 처리기 내부에서 오류를 트리거하면 문제가 발생합니까?트리거 오류가

답변

1

전혀 문제가 없습니다. 나는 동일한 설정을 가지고 있으며, 오류 처리기는 예외와 오류를 이메일로 보낸다.

여기 내 예외 처리기입니다. 나는 잡히지 않은 예외가 있다는 오류를 나타냅니다. 이 방법은 오류가 아니라 예외로 인해 발생했음을 알고 있습니다. 또한 get_class 때문에 예외가 발생합니다. 내 오류 처리기 이후

function exception_handler(Exception $e) { 
    trigger_error('Uncaught ' . get_class($e) . ', code: ' . $e->getCode() . "<br/>\n Message: " . htmlentities($e->getMessage()), E_USER_WARNING); 
} 

내가 예외 처리기에서 HTML이 HTML 전자 메일을 보냅니다. 제거하고 싶을 수도 있습니다.

1

전에 PHP 코드에서 오류 및 예외가 혼합되어있는 것을 보았습니다. 기술적으로는 문제가 발생하지 않지만 코드를 유지 관리하는 개발자에게는 혼란을 야기 할 수 있습니다. 시간이 있으면 모든 trigger_error 코드를 리팩터링하여 예외를 대신 사용하는 것이 좋습니다. 물론 PHP 자체가 만들고있는 trigger_error 물건들로 막혀 있지만, 대부분의 상황을 피할 수 있기를 바랍니다.

+0

예외와 오류는 별개입니다. 나는 당신이 예외에 대한 어떤 trigger_error 호출을 리펙토링 할 수 있다는 것에 동의하지만, 이것은 제거 할 수없는 내장 에러를 처리하지 않을 것이다. 네가 말했듯이. :) – MitMaro

+0

아, 물론이 방법 (예외 처리기 트리거링 오류 대신 예외를 발생시키는 오류 처리기 만들기)도 수행 할 수 있습니다. 그러나 어떤 방법이 바람직한지 궁금합니다. 이유는 무엇입니까? –

+0

예외는 하나의 매개 변수만을 사용하고 오류는 여러 매개 변수를 취하므로 OP 방식이 더 쉽습니다. – MitMaro