YII 2 전역 이상 처리 심도 있 게 설명
이상 처리 방식 은 보통 다음 과 같이 나 뉜 다.
기록 일지
이상 복구
클 라 이언 트 오 류 를 되 돌려 줍 니 다이 문 제 를 잘 처리 하려 면 비교적 간단 한 방식 은 처리 해 야 할 이상 을 장면 에 따라 먼저 분류 하 는 것 이 라 고 생각한다.
자주 사용 하 는 처 리 는 사용자 행동 으로 인 한 오 류 는 로 그 를 기록 할 필요 가 없습니다.여러 사람 이 사용 하 는 경우 로 그 량 이 너무 많 지만 사용자 가 정확 한 방식 으로 인 터 페 이 스 를 호출 할 수 있 도록 클 라 이언 트 에 구체 적 인 원인 을 되 돌려 야 합 니 다.서버 에 발생 한 오 류 는 로 그 를 기록 해 야 합 니 다.우 리 는 이러한 오 류 를 해결 해 야 하기 때 문 입 니 다.로 그 를 기록 하면 오류 의 원인 을 쉽게 찾 을 수 있 고 신속하게 해결 할 수 있 지만 클 라 이언 트 에 게 구체 적 인 원인 을 되 돌려 주지 않 습 니 다.사용자 가 자신의 행동 을 통 해 이상 이 나타 나 지 않 을 수 없 기 때 문 입 니 다.물론 우 리 는 자신의 업무 에 따라 자신의 이상 처리 방식 을 결정 할 수 있다.
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 전역 이상 처리 내용 은 저희 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 읽 어 주시 기 바 랍 니 다.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다: