2009-11-06 4 views
0

클래스에 다양한 기능이 있습니다. 각 함수에서 나는 try ... catch를 사용한다. 이것을 단순화 할 수있는 방법이 있습니까? 하나의 오류 클래스를 만들고 싶고 내 프로젝트의 모든 파일에서 액세스 할 수 있어야합니다. 각 함수에서 try..catch를 사용하지 않고 자동으로 Error 클래스로 이동해야합니다.try ... catch 블록을 많이 사용하지 마십시오.

답변

1

try catch를 함수 자체에 추가하지 않고 함수가 호출 된 페이지에 추가합니다.

예 :

try 
{ 
    $faq_title = mysqli_real_escape_string($link, $_POST['faq_title']); 
    $faq_subtitle = mysqli_real_escape_string($link, $_POST['faq_subtitle']); 
    $desc = mysqli_real_escape_string($link, $_POST['desc']); 
    $faq_e = new Shopadmin(); 
    $faq_e->add_faq($faq_title, $faq_subtitle, $desc); 
    $feedback = "<div class='succes'>FAQ added succesfully!</div>"; 
} 
catch(Exception $e) 
{ 
    $feedback = "<div class='error'>"; 
    $feedback .= $e->getMessage(); 
    $feedback .= "</div>"; 
} 

내 기능에 나는 내가 밖으로 에코 혔 어 및 $ 피드백에 저장 될 새로운 예외를 throw하지 않을 경우 쿼리가 성공적 여부 수행 된 경우 확인

주요 컨테이너 사업부

각 함수에서 시도 캐치를 추가 할 필요 withouth 서로 다른 기능을 위해 호출 할 수있는이 방법

나는이

0

전역 예외 포수를 등록하십시오. 이 함수는 검색되지 않은 예외를 catch합니다. register_session, 즉 모든 페이지에 포함 된 일부 파일 에서처럼 사이트 전체에서 작동하도록해야합니다.

참조 : http://php.net/manual/en/function.set-exception-handler.php

그러나 당신이 (당신이 오류를 처리하고 계속할 수 없습니다) 같은 예외로부터 복구 할 수 있습니다.

-1

기본적으로 이것은 거의 모든 프로젝트가 커짐에 따라 필수적입니다. 해결책은 오류 처리 모듈을 만드는 것입니다. 처음부터 새로 만들거나 ELMAH과 같은 이미 멋진 모듈을 사용할 수 있습니다.

+0

가 ELMAH는 ASP.net, 우리가 여기 – Palantir

+0

PHP에 대해 아차 이야기입니다 당신을 도움이되기를 바랍니다 , 내 나쁜, 피가 너무 많이 쏟아져. – theraneman

1

이것은 잘못된 방법으로 예외를 사용하는 것처럼 들립니다. 예외는 일반적으로 잡히지 않아야하며, 적어도 그렇게 자주 잡아서는 안됩니다. 예외 사용법을 자세히 설명하는 다른 questions 및/또는 answers을 살펴볼 수 있습니다.

관련 문제