백엔드 개발 PHP 튜토리얼 PHP 예외 처리 클래스 Exception 사용법에 대한 자세한 설명

PHP 예외 처리 클래스 Exception 사용법에 대한 자세한 설명

Jun 30, 2017 am 09:37 AM
exception php 상해

예외는 일반적인 프로그램 실행 중에 발생하는 다양한 유형의 오류를 처리하는 데 자주 사용됩니다. 예를 들어, 데이터베이스 연결을 할 때 데이터베이스 연결 실패를 처리해야 합니다. 예외를 사용하면 프로그램의 내결함성을 향상시켜 애플리케이션을 더욱 안정적이고 강력하게 만들 수 있습니다.

예외 사용

PHP5는 다른 언어와 유사한 예외 처리 모듈을 추가합니다. PHP 코드에서 생성된 예외는 throw 문에 의해 발생되고 catch 문에 의해 포착될 수 있습니다. 예외 처리가 필요한 코드는 가능한 예외를 포착하기 위해 try 코드 블록에 배치되어야 합니다. 각 시도는 하나 이상의 catch 블록에 해당합니다. 다양한 클래스에서 생성된 예외를 포착하려면 여러 catch를 사용하세요. try 블록이 더 이상 예외를 발생시키지 않거나 발생한 예외와 일치하는 catch가 없으면 PHP 코드는 마지막 catch로 점프한 후 계속 실행됩니다. 물론, PHP는 catch 블록 내에서 예외가 다시 발생하도록 허용합니다.

사전 정의된 예외

ExceptionException 클래스는 모든 예외의 기본 클래스입니다. Exception 클래스를 파생하여 사용자 정의 예외의 목적을 달성할 수 있습니다. 다음 목록에는 Exception에 대한 기본 정보가 나열되어 있습니다.

Exception {
    /* 属性 */
    protected string $message ;        //异常消息内容
    protected int $code ;            //异常代码
    protected string $file ;        //抛出异常的文件名
    protected int $line ;            //抛出异常在该文件中的行号
    /* 方法 */
    public construct ([ string $message = "" [, int $code = 0 [, Exception $previous = NULL ]]] )    //异常
构造函数
    final public string getMessage ( void )            //获取异常消息内容
    final public Exception getPrevious ( void )        //返回异常链中的前一个异常
    final public int getCode ( void )                //获取异常代码
    final public string getFile ( void )            //获取发生异常的程序文件名称
    final public int getLine ( void )                //获取发生异常的代码在文件中的行号
    final public array getTrace ( void )            //获取异常追踪信息
    final public string getTraceAsString ( void )    //获取字符串类型的异常追踪信息
    public string toString ( void )                //将异常对象转换为字符串
    final private void clone ( void )                //异常克隆
}
로그인 후 복사

Exception을 이해한 후, 예외 클래스를 확장하여 사용자 정의 예외를 구현해 보겠습니다.

function connectToDatabase()
{    
    if(!$link = mysql_connect("myhost","myuser","mypassw","mybd"))
    {
        throw new Exception("could not connect to the database.");
    }
}
try
{
    connectToDatabase();
}
catch(Exception $e)
{echo $e->getMessage();
}
로그인 후 복사

여기서 예외 유형 예외를 발생시키고 catch에서 이 예외를 포착한 다음 마지막으로 "데이터베이스에 연결할 수 없습니다."를 인쇄합니다. 데이터베이스 연결이 실패한 이유에 대한 정보도 표시하고 싶을 수도 있습니다. 다음으로, 예외 클래스를 확장하여 사용자 정의 정보를 구현합니다.

class MyException extends Exception
{
    protected $ErrorInfo;
    //构造函里处理一些逻辑,然后将一些信息传递给基类
    public function construct($message=null,$code=0)
    {
        $this->ErrorInfo = '自定义错误类的错误信息';
        parent::construct($message,$code);
    }    
    //提供获取自定义类信息的方法
    public function GetErrorInfo()
    {
        return $this->ErrorInfo;
    }
    /**
     *
     *这里还可以添加异常日志,只需在上面的构造函数里调用就可以了
     *
     */
    public function log($file)
    {
        
file_put_contents($fiel,$this->toString(),FILE_APPEND);
    }
}
function connectToDatabase()
{    
    throw new MyException("ErrorMessage");
}
try
{    
    connectToDatabase();
}
catch(MyException $e)
{    
    echo $e->getMessage() . "\n";
    echo $e->GetErrorInfo();
}
로그인 후 복사

set_Exception_handler

사용자 정의 예외 처리 함수를 설정합니다. 잡지 못한 예외가 발생할 때 호출되는 함수 이름을 set_Exception_handler의 매개 변수로 지정합니다. 이 함수는 set_Exception_handler()를 호출하기 전에 정의되어야 합니다. 이 함수는 throw된 예외 개체인 하나의 매개 변수를 허용합니다. 이는 위에서 언급한 예외 로깅 처리를 개선하는 데 사용될 수 있습니다.

function ExceptionLogger($exception)
{
    $file='ExceptionLog.log';
    file_put_contents($fiel,$exception->toString(),FILE_APPEND);
}
set_exception_handler(ExceptionLogger);
로그인 후 복사

1.3. PHP에서는 catch 코드 블록 내에서 예외가 다시 발생하도록 허용합니다.

try
{
    #code...
}
catch(Exception $e)
{
    if($e->getCode() == 999)
    {
        #进行一些操作
    }
    else
    {
        throw $e;
    }
}
로그인 후 복사

Summary

예외 기능은 매우 강력하지만, 이는 프로젝트에서 예외 메커니즘, 특히 많은 수의 예외 로그를 ​​사용하는 메커니즘을 함부로 남용할 수 있다는 의미는 아닙니다. 이로 인해 시스템 오버헤드가 크게 증가하고 응용 프로그램의 성능을 저하시킵니다. 오류 코드를 사용하면 오류 메시지를 쉽게 관리할 수 있습니다. 오류 메시지가 여러 번 발생하는 경우 오류 코드를 사용하는 것이 과학적인 선택입니다. 오류 코드를 사용하여 오류 메시지를 여러 언어로 표시할 수도 있습니다.

위 내용은 PHP 예외 처리 클래스 Exception 사용법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

CakePHP 프로젝트 구성 CakePHP 프로젝트 구성 Sep 10, 2024 pm 05:25 PM

이번 장에서는 CakePHP의 환경 변수, 일반 구성, 데이터베이스 구성, 이메일 구성에 대해 알아봅니다.

Ubuntu 및 Debian용 PHP 8.4 설치 및 업그레이드 가이드 Ubuntu 및 Debian용 PHP 8.4 설치 및 업그레이드 가이드 Dec 24, 2024 pm 04:42 PM

PHP 8.4는 상당한 양의 기능 중단 및 제거를 통해 몇 가지 새로운 기능, 보안 개선 및 성능 개선을 제공합니다. 이 가이드에서는 Ubuntu, Debian 또는 해당 파생 제품에서 PHP 8.4를 설치하거나 PHP 8.4로 업그레이드하는 방법을 설명합니다.

CakePHP 날짜 및 시간 CakePHP 날짜 및 시간 Sep 10, 2024 pm 05:27 PM

cakephp4에서 날짜와 시간을 다루기 위해 사용 가능한 FrozenTime 클래스를 활용하겠습니다.

CakePHP 파일 업로드 CakePHP 파일 업로드 Sep 10, 2024 pm 05:27 PM

파일 업로드 작업을 위해 양식 도우미를 사용할 것입니다. 다음은 파일 업로드의 예입니다.

CakePHP 라우팅 CakePHP 라우팅 Sep 10, 2024 pm 05:25 PM

이번 장에서는 라우팅과 관련된 다음과 같은 주제를 학습하겠습니다.

CakePHP 토론 CakePHP 토론 Sep 10, 2024 pm 05:28 PM

CakePHP는 PHP용 오픈 소스 프레임워크입니다. 이는 애플리케이션을 훨씬 쉽게 개발, 배포 및 유지 관리할 수 있도록 하기 위한 것입니다. CakePHP는 강력하고 이해하기 쉬운 MVC와 유사한 아키텍처를 기반으로 합니다. 모델, 뷰 및 컨트롤러 gu

PHP 개발을 위해 Visual Studio Code(VS Code)를 설정하는 방법 PHP 개발을 위해 Visual Studio Code(VS Code)를 설정하는 방법 Dec 20, 2024 am 11:31 AM

VS Code라고도 알려진 Visual Studio Code는 모든 주요 운영 체제에서 사용할 수 있는 무료 소스 코드 편집기 또는 통합 개발 환경(IDE)입니다. 다양한 프로그래밍 언어에 대한 대규모 확장 모음을 통해 VS Code는

CakePHP 유효성 검사기 만들기 CakePHP 유효성 검사기 만들기 Sep 10, 2024 pm 05:26 PM

컨트롤러에 다음 두 줄을 추가하면 유효성 검사기를 만들 수 있습니다.

See all articles