YII 2 전역 이상 처리 심도 있 게 설명

3884 단어 YII2예외 처리
우선,우 리 는 안정 적 인 시스템 에 도 대량의 bug 가 존재 한 다 는 것 을 이성적으로 인식 해 야 한다.어떤 원인 으로 인해 발생 하 는 오류 든 우 리 는 예방 을 잘 해 야 한다.가장 좋 은 결 과 는 당연히 이상 을 바로 잡 고 클 라 이언 트 에 게 정확 한 응답 결 과 를 되 돌려 주 는 것 이다.그러나 대부분 상황 에서 정상 적 인 결 과 를 되 돌 릴 수 없다.클 라 이언 트 에 게 이상 한 정보 만 되 돌려 줍 니 다.
이상 처리 방식 은 보통 다음 과 같이 나 뉜 다.
기록 일지
이상 복구
클 라 이언 트 오 류 를 되 돌려 줍 니 다이 문 제 를 잘 처리 하려 면 비교적 간단 한 방식 은 처리 해 야 할 이상 을 장면 에 따라 먼저 분류 하 는 것 이 라 고 생각한다.

자주 사용 하 는 처 리 는 사용자 행동 으로 인 한 오 류 는 로 그 를 기록 할 필요 가 없습니다.여러 사람 이 사용 하 는 경우 로 그 량 이 너무 많 지만 사용자 가 정확 한 방식 으로 인 터 페 이 스 를 호출 할 수 있 도록 클 라 이언 트 에 구체 적 인 원인 을 되 돌려 야 합 니 다.서버 에 발생 한 오 류 는 로 그 를 기록 해 야 합 니 다.우 리 는 이러한 오 류 를 해결 해 야 하기 때 문 입 니 다.로 그 를 기록 하면 오류 의 원인 을 쉽게 찾 을 수 있 고 신속하게 해결 할 수 있 지만 클 라 이언 트 에 게 구체 적 인 원인 을 되 돌려 주지 않 습 니 다.사용자 가 자신의 행동 을 통 해 이상 이 나타 나 지 않 을 수 없 기 때 문 입 니 다.물론 우 리 는 자신의 업무 에 따라 자신의 이상 처리 방식 을 결정 할 수 있다.
ThinkpHP 나 다른 프레임 에 이상 이 생기 면 프레임 의 이상 페이지 가 나타 납 니 다.

그러나 만약 에 우리 가 개발 한 것 이 API 라면 한 페이지 로 돌아 가 클 라 이언 트 에 게 주 는 것 은 분명 불합리 하 다.다른 사람 이 당신 의 인 터 페 이 스 를 사용 할 때 인터페이스 분석 결 과 를 분석 해 야 하기 때문에 이렇게 하 는 것 은 매우 불합리 하기 때문에 우 리 는 프레임 의 이상 처 리 를 다시 써 야 한다.다음은 Yii 2 프레임 워 크 를 예 로 들 어 재 작성 논 리 를 설명 합 니 다.
우선,Yii 프레임 워 크 이상 처리 설정(../config/web.php)을 찾 아야 합 니 다.

 'components' => [
    'errorHandler' => [
      'errorAction' => 'site/error',
      'class' => 'app\common\ExceptionHandler',//(                )
    ],
우리 프로그램 이 고객 의 부적 절 한 호출 로 인 한 오류 와 서버 의 오 류 를 간단하게 식별 할 수 있 도록 우 리 는 고객 의 이상 류 를 쓸 수 있 습 니 다.새 common\\UserException.php 파일

class UserException extends Exception
{
  // HTTP     404,200
  /**
   * @var int|mixed
   */
  public $code = 400;
  //       
  /**
   * @var mixed|string
   */
  public $msg = '    ';
  //        
  /**
   * @var int|mixed
   */
  public $errorCode = 10000;
 
  /**
   * UserException constructor.
   * @param $params
   */
  public function __construct($params=[]) {
    //                    
    if (!is_array($params)) {
      return;
    }
    //           
    if (array_key_exists('code',$params)) {
      $this->code = $params['code'];
    }
    if (array_key_exists('msg',$params)) {
      $this->msg = $params['msg'];
    }
    if (array_key_exists('errorCode',$params)) {
      $this->errorCode = $params['errorCode'];
    }
  }
}
새로 만 든common/ExceptionHandler.php파일 은 yii 의 이상 처리 렌 더 링 이vendor\yiisoft\yii2\web\ErrorHandler.php중의renderException방법 으로 렌 더 링 되 었 기 때문에 우 리 는 자신 만 의 이상 처리 류 를 개발 할 때 이 유형 을 계승 하고 다시 쓸 수 있 습 니 다.
이것 은 전체 국면 의 이상 처 리 를 완성 하 였 으 니,우리 에 게 효 과 를 보 여 주 었 다.
디버그 모드 를 열 때 오류 던 지기:

debug 모드 를 닫 고 서버 쪽 이상 던 지기:

 public function actionIndex()
 {
  throw new \Exception();
 
 }

debug 모드 를 닫 고 클 라 이언 트 이상 던 지기:

  public function actionIndex()
  {
    throw new UserException();
 
  }

YII 2 전역 이상 처리 에 대한 심도 있 는 설명 을 담 은 이 글 은 여기까지 입 니 다.더 많은 YII 2 전역 이상 처리 내용 은 저희 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 읽 어 주시 기 바 랍 니 다.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!

좋은 웹페이지 즐겨찾기