>php教程 >PHP开发 >YII Framework 튜토리얼의 예외 처리에 대한 자세한 설명

YII Framework 튜토리얼의 예외 처리에 대한 자세한 설명

高洛峰
高洛峰원래의
2016-12-27 14:13:281531검색

이 문서에서는 YII Framework 예외 처리에 대해 설명합니다. 다음과 같이 참고할 수 있도록 모든 사람과 공유하세요.

예외는 어디에나 있습니다. 프로그래머는 이러한 예외를 만들고 수정하는 일을 합니다. YII 프레임워크는 PHP 예외를 캡슐화하여 예외 처리를 더 쉽게 만듭니다.

YII를 사용하여 오류 및 예외를 처리하는 구성 방법:

항목 파일에서 YII_ENABLE_ERROR_HANDLER 및 YII_ENABLE_EXCEPTION_HANDLER를 true로 정의할 수 있습니다.

예외가 발생합니다

1. onError 또는 onException 이벤트를 트리거합니다.

2. 인위적으로 예외를 발생시킵니다. 예를 들어

throw new ExceptionClass('错误信息');//异常的基类
throw new CHttpException(404,'此页面不存在');//面向最终用户的类

예외 표시 보기

오류가 CErrorHandler 구성 요소로 전달되면 해당 보기를 선택하여 오류를 표시합니다.
CErrorHandler는 오류 메시지를 표시하기 위해 적절한 뷰를 검색합니다.

1. WebRoot/themes/ThemeName/views/system: 현재 테마 뷰 아래의 시스템 디렉터리.
2. WebRoot/protected/views/system: 애플리케이션 기본 보기의 시스템 디렉터리에 있습니다.
3. yii/framework/views: Yii에서 제공하는 표준 보기 디렉터리에 있습니다.

캡처된 예외 오류를 처리하는 작업을 사용합니다.

구성 파일을 수정합니다.

/yii_dev/testwebap/protected/config/main.php
    'errorHandler'=>array(
// use 'site/error' action to display errors
      'errorAction'=>'site/error',
    ),

는 오류를 처리하는 작업을 지정하는 데 사용됩니다. 예를 들어 사이트 컨트롤러의
actionError 오류 작업에는 다음과 같은 기본 코드가 있습니다.

/**
 * This is the action to handle external exceptions.
 */
public function actionError()
{
  if($error=Yii::app()->errorHandler->error)
  {
    if(Yii::app()->request->isAjaxRequest)
      echo $error['message'];
    else
      $this->render('error', $error);
  }
}

이 작업에서는 먼저 CErrorHandler::error에서 자세한 오류 정보를 가져옵니다. 얻은 정보가 비어 있지 않으면 CErrorHandler::error에서 반환된 정보를 사용하여 오류 보기를 렌더링합니다. CErrorHandler::error에서 반환된 정보는 다음 구조의 배열입니다.

code: HTTP 상태 코드(예: 403, 500)
type: 오류 유형(예: CHttpException, PHP 오류) ;
메시지: 오류 메시지;
파일: 오류가 발생한 PHP 파일의 이름
줄: 오류 호출 스택 정보; 소스: 오류가 발생한 코드의 컨텍스트입니다.

예외 로그

오류 발생 시 오류 수준의 오류 메시지가 기록됩니다. 오류가 PHP 경고 또는 알림으로 인해 발생한 경우 메시지는 php 카테고리에 기록됩니다. 오류 메시지가 포착되지 않은 예외로 인해 발생한 경우 카테고리는 예외.ExceptionClassName이 됩니다(CHttpException의 경우 해당 statusCode도 추가됨). 카테고리 이름). 개발자는 이러한 기록을 사용하여 응용 프로그램이 실행될 때 오류 메시지와 예외 처리 방법을 모니터링할 수 있습니다.

이 글이 Yii 프레임워크를 기반으로 하는 모든 분들의 PHP 프로그램 설계에 도움이 되기를 바랍니다.

YII Framework 튜토리얼 및 관련 글의 예외 처리에 대한 자세한 설명을 보려면 PHP 중국어 웹사이트를 참고하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.