2010-03-24 2 views
2

모든 catch되지 않은 예외에 대한 백스톱으로 모든 액션에 try catch 문을 적용하고 싶습니다.cakephp - 액션 잡기/실행하기

catch 문이 기본 4xx 상태 코드를 돌려 보낼 수 있기 때문에 이것이 Ajax 작업에 특히 유용하다고 생각합니다. Prototype의 onFailure() 함수는 클라이언트 측 오류 처리를 수행 할 수 있습니다.

어떻게 이런 케이크 디스패처에 시도/캐치와 함께 작업 호출을 포장하지 않고이 작업을 수행 할 수 있습니다

try { 
    output = $controller->dispatchMethod($params['action'], $params['pass']); 
} 
catch {...} 

아무도 제안 또는 디스패처를 건드리지 않고이 기능을 얻기위한 또 다른 가능한 전략을 가지고 있는가 ?

Displatcher에 예외 처리를 넣는 것에 대해 사람들은 어떻게 느끼나요? 나는 케이크가 PHP 4 지원을 떨어 뜨릴 때 상상한다. 이것을위한 내장 메커니즘이있을 것이다.

[편집] 나는 오류 처리 케이크를 조사했다. try/catch 없이는 기능상의 큰 손실이있는 것처럼 보입니다. 그리고 cakeErrors와 다른 예외를 혼합하는 것을 주저합니다.

답변

1

왜 이렇게하고 싶은지 확신 할 수 없습니다. 당신은

if($this->params['requested']) 

나는 당신의 응용 프로그램을 만들 수 있습니다 어떤 예외의 종류를 알 수없는, 그것은 사용 컨트롤러에서 아약스 호출이 있는지 확인하기 위해 PARAMS를 확인할 수 있지만, 그것은 누락 된 액션,보기 또는 유사한, 케이크의 경우 app/views/errors 폴더에서 사용자 정의 할 수있는 오류 페이지를 출력합니다.

이 책은 사용하여 오류를 처리하는 방법에 대한 몇 가지 정보를 가지고 CakePHP의 당신은 또한 자신의 사용자 지정 오류 처리기를 만들거나 내장 확장에 대한 기사와 튜토리얼에 대한 주위에 구글을 가질 수 http://book.cakephp.org/2.0/en/development/errors.html

, 여기에 오류 처리기에 내장 하나는 디스패치 사이클의 핵심에서 try {} catch {}에 모든 디스패치 호출을 래핑합니다.

응용 프로그램에서
+0

와 라인

$Dispatcher->dispatch($url); 

을 대체 이들은 '없는 행동'와 같은 일반적인 오류가 없습니다. 이들은 종종 다른 웹 서비스에 접속하거나 서버 (예 : 이미지 생성기) 또는 캐시 엔진에서 실행중인 다른 응용 프로그램과 작업하여 생성됩니다. 이들은 일반적으로 액션의 예외 처리에 의해 처리됩니다. 잡히지 않은 예외에 대해 보편적 인 처리를 제공 할 수있는 백스톱을 찾고있었습니다. 이것은 제가 준 예제에서 유용 할 것입니다. 링크를 가져 주셔서 감사합니다. PHP 4/Cake 방식을 살펴 보겠습니다 : ErrorHandler 클래스. 감사. – joshs

+0

아, 나는 외부 서비스를 호출하고 응답 코드를 켜고 케이크 오류를 발생시키는 동작에서 오류 코드를 잡아서 처리 할 수있는 것처럼 보입니다. –

+0

궁극적 인 목표는 액션에서 모든 예외를 잡는 것일 수 있지만 특히 베타 테스트 중 백스톱을 갖는 것이 좋을 것입니다. 또한, 예외 사항의 포인트는 정상적인 케이스 논리 외부에서 예기치 않은 케이스 처리를 이동하는 것입니다. 내 행동이 정교한 Exception Handler가되는 것을 원하지 않습니다 ... 특히 개발 중에 예외가 실제로 자주 던져 질지 확실하지 않은 경우. – joshs

1

/웹 루트/index.php에

try { 
    $Dispatcher->dispatch($url);  
} catch(Exception $e) { 
    // do exception handling 
}