PHP 에서 예외 이상 메커니즘 분석
이상 하 게 던 져 졌 을 때 그 후의 코드 는 계속 실행 되 지 않 고 PHP 는 일치 하 는"catch"코드 블록 을 찾 으 려 고 시도 합 니 다.
이상 하 게 잡 히 지 않 았 고 set 를 사용 하지 않 았 다 면exception_handler()가 해당 하 는 처 리 를 하면 심각 한 오류(치 명 적 오류)가 발생 하고'Uncaught Exception'(이상 미 포착)의 오류 메 시 지 를 출력 합 니 다.
이상 한 것 을 던 지고 잡 지 않 으 려 고 합 니 다.
<?php
//create function with an exception
function checkNum($number)
{
if($number>1)
{
throw new Exception("Value must be 1 or below");
}
return true;
}
//trigger exception
checkNum(2);
?>
위의 코드 는 이러한 오 류 를 얻 을 수 있 습 니 다:
PHP Fatal error: Uncaught exception 'Exception' with message 'Value must be 1 or below' in /home/wangkongming/babytree/test/php/php_ob/3.php:7
Stack trace:
#0 /home/wangkongming/babytree/test/php/php_ob/3.php(12): checkNum(2)
#1 {main}
thrown in /home/wangkongming/babytree/test/php/php_ob/3.php on line 7
Try,throw,catch위의 예 에서 발생 한 오 류 를 피 하려 면,우 리 는 이상 을 처리 하기 위해 적당 한 코드 를 만들어 야 한다.
정확 한 처리 절 차 는 다음 을 포함해 야 합 니 다.
Try-이상 한 함 수 를 사용 하면"try"코드 블록 에 있어 야 합 니 다.트리거 이상 이 없 으 면 코드 는 그대로 실 행 됩 니 다.하지만 이상 이 촉발 되면 이상 을 던 집 니 다.
Throw-이상 을 촉발 하 는 방법 을 규정 합 니 다.모든"throw"는 최소한 하나의"catch"에 대응 해 야 합 니 다.
Catch-"catch"코드 블록 은 이상 을 포착 하고 이상 정 보 를 포함 하 는 대상 을 만 듭 니 다.
이상 을 촉발 합 니 다:
<?php
//create function with an exception
function checkNum($number)
{
if($number>1)
{
throw new Exception("Value must be 1 or below");
}
return true;
}
//trigger exception
try{
checkNum(2);
echo "If you see this ,the number is 1 or below";
}catch(Exception $e) {
echo 'Message: '.$e -> getMessage();
}
?>
위의 코드 실행:Message: Value must be 1 or below
예 설명:
위의 코드 가 이상 을 던 져 서 캡 처 했 습 니 다.
checkNum()함 수 를 만 듭 니 다.그것 은 숫자 가 1 보다 큰 지 를 검사 합 니 다.그렇다면,이상 을 던 져 라.
"try"코드 블록 에서 checkNum()함 수 를 호출 합 니 다.
checkNum()함수 의 이상 이 던 져 짐
"catch"코드 블록 은 이 이상 을 받 아들 이 고 이상 한 정 보 를 포함 하 는 대상($e)을 만 듭 니 다.
이 exception 대상 에서$e->getMessage()를 호출 하여 이 이상 한 오류 메 시 지 를 출력 합 니 다.
단,"throw 마다 catch 에 대응 해 야 합 니 다"라 는 원칙 에 따라,누락 된 오 류 를 처리 하기 위해 서 는 최상 위 이상 처리 장 치 를 설정 할 수 있 습 니 다.
PHP 의 Exception 이상 메커니즘 을 분석 하 는 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 PHP 의 Exception 이상 내용 은 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
laravel에 yo에서 angularJs&coffeescript를 사용할 수 있도록 한다.먼저 yo 명령을 사용할 수 있어야하므로 아래에서 설치 global에 설치한 곳에서 laravel의 프로젝트 루트로 이동. 클라이언트 코드를 관리하는 디렉토리를 만들고 이동합니다. 클라이언트 환경 만들기 이것으로 히...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.