> 백엔드 개발 > PHP 튜토리얼 > PHP의 예외 처리가 무엇인지 보여주는 5분

PHP의 예외 처리가 무엇인지 보여주는 5분

WBOY
풀어 주다: 2023-04-10 17:58:02
원래의
2766명이 탐색했습니다.

이전 글에서는 "PHP에서 이미지 워터마크를 추가하는 방법을 이해해야 합니다"를 가져왔는데, 예제를 통해 PHP에서 워터마크를 추가하는 방법을 자세히 소개했습니다. PHP의 오류 처리에 대한 지식이 도움이 되기를 바랍니다!

PHP의 예외 처리가 무엇인지 보여주는 5분

PHP의 오류 및 예외 처리는 PHP에서 매우 일반적으로 사용됩니다. 일상적인 개발에서 세미콜론 추가를 잊어버리거나, 잘못된 함수 이름을 작성하거나, 함수가 재정의되는 등의 문제를 확실히 접하게 됩니다. .. 오류가 많은데, 개발 과정에서 오류를 발견하고 표시해 준다면 분명 우리 개발에 큰 도움이 될 것입니다.

그러므로 프로젝트를 개발할 때 프로세스를 올바르게 사용하면 오류를 찾아 수정하여 개발 속도를 높이는 데 도움이 됩니다. 그런 다음 오류 처리를 이해하는 방법을 살펴보겠습니다. 무료 "php 오류 처리" 교육 영상을 통해서도 학습하실 수 있습니다.

PHP의 예외 처리 클래스

PHP는 Exception이라는 내장 예외 처리 클래스를 제공합니다. 이 클래스에는 예외 처리를 위한 몇 가지 함수가 포함되어 있습니다. 잡힐 수 있습니다. Exception,这个类包含了一些处理异常的函数,这些函数可以捕获程序异常和错误。

那下面列举出该类中较为常用的函数:

  • getTraceAsString():返回已格式化成字符串的、由函数 getTrace() 函数所产生的信息

  • __toString():产生异常的字符串信息,它可以重载。注意,该函数最前部是两个下划线

  • getMessage():返回异常的消息内容

  • getLine():返回发生错误的代码行号

  • getCode():以数字形式返回异常代码

  • getFile():返回发生异常的文件名

  • getTrace():返回 backtrace() 数组

捕获程序中的异常

程序中的异常出现一般不会自己显现出来,这时候我们可以通过try catch 语句和 throw

다음은 이 클래스에서 더 일반적으로 사용되는 함수입니다:

  • getTraceAsString(): 형식화된 문자 반환 문자열 정보 getTrace() 함수에 의해 생성됨


  • __toString(): 예외를 생성하는 문자열 정보로 오버로드될 수 있습니다. 이 함수 앞에 두 개의 밑줄이 있습니다
  • getMessage(): 비정상적인 메시지 내용을 반환합니다

  • getLine () : 오류가 발생한 코드 줄 번호를 반환

  • getCode(): 예외 코드를 숫자 형식으로 반환


  • getFile(): 예외가 발생한 파일 이름을 반환
  • getTrace(): backtrace() 배열을 반환PHP의 예외 처리가 무엇인지 보여주는 5분 li>


프로그램 내 예외 포착

프로그램 내 예외는 일반적으로 저절로 나타나지 않습니다. 이때 try catch 문과 throw 키워드는 프로그램에서 예외를 포착하는 목적을 달성하기 위한 것입니다. try catch 문은 흐름 제어 문과 유사합니다. throw 키워드는 조건 선택과 유사한 구조를 통해 프로그램에서 예외를 포착할 수 있습니다. try catch 문의 구문 형식은 다음과 같습니다.

try{
    // 可能出现异常或错误的代码,比如文件操作、数据库操作等
}catch(Exception $a){    // $a 为一个异常类的对象
    // 输出错误信息
}
로그인 후 복사

프로그램 예외를 잡아야 할 경우, 잡아야 하는 코드를 try 코드 블록에 넣어야 합니다. 위 구문에서 각 시도는 다음 위치에 있어야 합니다. 적어도 하나의 해당 캐치. try 코드 블록이 일치하는 예외를 포착하지 못하면 코드는 마지막 포착으로 점프하여 계속됩니다.


여기서 생성된 예외는 throw 문에 의해 던져지고 catch에 의해 캡처될 수 있습니다. 예외가 발생하면 그 뒤에 있는 코드는 더 이상 실행되지 않습니다.


예제는 다음과 같습니다.

<?php
    try{
        $err = &#39;抛出异常信息,并跳出 try 语句块&#39;;
        if(is_dir(&#39;./demo&#39;)){
            echo &#39;这里是一些可能会发生异常的代码&#39;;
        }else{
            throw new Exception($err, 20211020);   // 抛出异常
        }
        echo &#39;上面抛出异常的话,这行代码将不会执行,转而执行 catch 中的代码。<br>&#39;;
    }catch(Exception $e){
        echo &#39;捕获异常:&#39;.$e->getMessage().&#39;<br>错误代码:&#39;.$e->getCode().&#39;<br>&#39;;
    }
    echo &#39;继续执行 try catch 语句之外的代码&#39;;
?>
로그인 후 복사

출력 결과:


위 예에서는 try 문을 사용하여 현재 디렉터리에 데모라는 디렉터리가 있는지 확인합니다. 존재하지 않으므로 throw 키워드가 실행되었습니다. 예외가 발견되어 발생한 후에는 try 문의 나머지 문이 실행되지 않습니다.

🎜🎜자신만의 예외 클래스 만들기🎜🎜🎜🎜🎜 PHP에서는 예외를 적극적으로 발생시키는 경우가 거의 없으므로 사전에 if-else를 사용하여 처리할 수 있습니다. . 가능한 예외를 판단하고 예외를 수동으로 발생시킵니다. PHP에서는 우리가 직접 만든 예외 클래스를 자주 사용할 수 있습니다. 🎜🎜🎜예는 다음과 같습니다. 🎜🎜
<?php
class emailException extends Exception{
    function __toString(){
        return "<b>email is null</b>file:".$this->getFile().&#39;,line:&#39;. $this->getLine();
    }
}
class nameException extends Exception{
}
?>
로그인 후 복사
🎜위의 예에서는 두 개의 예외 클래스가 정의되어 있으며 둘 다 Exception 기본 클래스에서 상속됩니다. 🎜🎜실제 비즈니스에서도 필요에 따라 다양한 예외를 발생시킵니다. 예는 다음과 같습니다: 🎜
function reg($reg) {
    if (empty($reg[&#39;email&#39;])) {
        throw new emailException("emaill is null", 1);
    }
    if(empty($reg[&#39;name&#39;])) {
        throw new nameException("name is null", 2);
     }
}
로그인 후 복사
🎜비즈니스 코드를 실행할 때 if 문을 사용하여 예외가 발생할 위치를 확인한 다음 수동으로 예외를 발생시킬 수 있습니다. , 다른 예외는 명령문을 통해 처리하기 위해 다른 예외 클래스에 배포됩니다. 다음 예에서는 다른 상황에 따라 다른 예외가 캡처됩니다. 프로그램에 여전히 다른 예외가 있더라도 다른 예외를 포착합니다. 블록도 건너뜁니다. 프로그램에 예외가 있는지 여부에 관계없이 finally finally에 있는 문이 실행됩니다. 예는 다음과 같습니다: 🎜🎜
try{
    $reg = array(&#39;phone&#39;=>&#39;1888888888&#39;);
    reg($reg);
} catch(emailException $e) {
    echo $e;
} catch(nameException $e) {
    echo &#39;error msg:&#39; .$e->getMessage().&#39;error code:&#39;.$e->getCode();
} finally {
    echo &#39; finally&#39;;
}
로그인 후 복사
🎜 PHP에 대해 더 알고 싶다면 "🎜PHP 비디오 튜토리얼🎜"을 클릭하여 배울 수 있습니다! 🎜

위 내용은 PHP의 예외 처리가 무엇인지 보여주는 5분의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿