2017-12-06 11 views
1

Yii2 고급 응용 프로그램 프로젝트에서 작업 중이며 yii2 기본 제공 오류 처리기에 문제가 있습니다. 나는 이런 식으로 내 백엔드 구성에 errorAction을 설정 한Yii2 - 오류 처리기에서 데이터베이스 예외를 catch 할 수 없습니다.

: 여기 내 문제의 설명입니다

'errorHandler' => [ 
    'errorAction' => 'site/error', 
], 

SiteController 어획량, 이제 방법 actionError() 모든 응용 프로그램 예외, 사용자 정의 예외도 치명적인 오류 , 데이터베이스 관련 예외 (예 : yii\db\IntegrityException)를 제외한 이유는 모르지만 그런 예외가 발생하면 actionError()은 아무 것도하지 않습니다! try-catch 블록을 수동으로 예외를 catch하고 싶지 않고 중앙 ErrorHandler 캐치를 원합니다. 모두 예외입니다.

이 문제를 어떻게 해결할 수 있습니까? 관심을 가져 주신 모든 yii 전문가에게 특별히 감사드립니다. 이 이상한 문제를 해결하도록 도와주세요.

+0

'YII_DEBUG'을 (를) 비활성화 했습니까? – Yupik

+0

@Yupik 아니요, 'true'값이 있습니다. – hamed

+0

변경해야합니다. 수정해야합니다. – Yupik

답변

0

이 GitHub 문제에 따르면 : yiisoft/yii2/issues/10657과 @Yupik이 작성한 의견에 YII_DEBUG을 변경해야합니다.

YII_DEBUGtrue 인 경우 디버그 모드에서 yii\db\IntegrityException에 대한 적절한 메시지가 나타납니다.

YII_DEBUGfalse 인 경우 (생산 환경에서와 마찬가지로) 오류가 actionError()으로 리디렉션되어 사용자 친화적 인 모드로 표시됩니다.