php中异常处理方法总结
当异常被触发时,通常会发生:在PHP5中添加了类似于其它语言的错误异常处理模块。在 PHP代码中所产生的异常可被 throw语句抛出并被 catch 语句捕获。需要进行异常处理的代码都必须放入 try 代码块内,以便捕获可能存在的异常。每一个 try 至少要有一个与之对应的 catch。
使用多个 catch 可以捕获不同的类所产生的异常,当 try 代码块不再抛出异常或者找不到 catch 能匹配所抛出的异常时,PHP 代码就会在跳转到最后一个 catch 的后面继续执行。当然,PHP 允许在 catch 代码块内再次抛出(throw)异常,当一个异常被抛出时,其后(译者注:指抛出异常时所在的代码块)的代码将不会继续执行,而 PHP 就会尝试查找第一个能与之匹配的 catch,如果一个异常没有被捕获,而且又没用使用 set_exception_handler() 作相应的处理的话,那么 PHP 将会产生一个严重的错误,并且输出 Uncaught Exception ... (未捕获异常)的提示信息.
1、异常类的层级关系,代码如下:
class NotFoundException extends Exception{}
class InputException extends Exception{}
class DBException extends Exception{}
2、配置未捕捉异常的处理器,代码如下:
<?php function exception_uncaught_handler(Exception $e) { header('Content-type:text/html; charset=utf-8'); if ($e instanceof NotFoundException) exit($e->getMessage()); elseif ($e instanceof DBException) exit($e->getMessage()); else exit($e->getMessage()); } set_exception_handler('exception_uncaught_handler'); ?>
3、在数据库连接代码,手动抛出DBException异常但未使用try…catch进行捕获处理,该异常将被PHP自定义异常处理器,exception_uncaught_handler()函数处理:
<?php $this->resConn = mysql_connect($CONFIGS['db_host'], $CONFIGS['db_user'], $CONFIGS['db_pwd']); if (false == is_resource($this->resConn)) throw new DBException('数据库连接失败。' . mysql_error($this->resConn)); ?>
4、业务逻辑一瞥:
if (0 != strcmp($curAlbum->interest_id, $it))
throw new NotFoundException('很抱歉,你所访问的相册不存在');
以上就是PHP自定义异常处理器的具体使用方法.
php实例代码如下:
<?php class customException extends Exception { public function errorMessage() { //error message $errorMsg = 'Error on line ' . $this->getLine() . ' in ' . $this->getFile() . ': <b>' . $this->getMessage() . '</b> is not a valid E-Mail address'; return $errorMsg; } } $email = "someone@example.com"; try { //check if if (filter_var($email, FILTER_VALIDATE_EMAIL) === FALSE) { //throw exception if email is not valid throw new customException($email); } //check for "example" in mail address if (strpos($email, "example") !== FALSE) { throw new Exception("$email is an example e-mail"); } } catch(customException $e) { echo $e->errorMessage(); } catch(Exception $e) { echo $e->getMessage(); } ?>
例子解释:上面的代码测试了两种条件,如何任何条件不成立,则抛出一个异常.
1.customException() 类是作为旧的 exception 类的一个扩展来创建的,这样它就继承了旧类的所有属性和方法.
2.创建 errorMessage() 函数,如果 e-mail 地址不合法,则该函数返回一个错误消息.
3.执行 "try" 代码块,在第一个条件下,不会抛出异常.
4.由于 e-mail 含有字符串 "example",第二个条件会触发异常.
5."catch" 代码块会捕获异常,并显示恰当的错误消息.
如果没有捕获 customException,紧紧捕获了 base exception,则在那里处理异常,重新抛出异常,有时,当异常被抛出时,您也许希望以不同于标准的方式对它进行处理,可以在一个 "catch" 代码块中再次抛出异常,代码如下:
总结:PHP异常的使用方法分三步:
第一步:定义异常类,如果不定义就用系统默认的异常类;
第二步:当出现异常时用 throw 抛出异常,例如 ex1($num2);异常的参数是$num2用该异常的getMessage()获取;
第三步:触发异常,用try子句,当满足条件时 throw new ex1($num);
第四步:catch捕获异常 catch (ex2 $e),相当于实例化一个定义好的异常类ex2为$e;
注意,异常可以定义多个,但是只能触发一个,也就是说只能用catch捕获一个异常.
基本异常类,创建可抛出一个异常的函数:
<?php function num($num) { if ($num > 1) { //异常抛出条件 $msg = "数值不能大于1″;//异常提示信息 throw new Exception($msg);//抛出异常 } echo "数值小于1″; } //在 "try" 代码块中触发异常 try { num(3); echo "执行正常"; } //捕获异常 catch(Exception $e) { echo "错误信息:" . $e->getMessage(); //Exception()的系统方法获取异常信息 echo "错误文件:" . $e->getFile(); //Exception()的系统方法获取异常文件名 echo "行数:" . $e->getLine(); //Exception()的系统方法获取异常行数 } //====================================================================== echo "<br>========================================================<br>"; //扩展基本异常类 function checkEmail($email) { //定义一个可以抛出异常的判断EMAIL合法性的函数 if (filter_var($email, FILTER_VALIDATE_EMAIL) == false) { throw new checkEmailException($email); //抛出异常用EMAIL做参数 } echo "邮件合法"; } class checkEmailException extends Exception { //定义扩展异常类 public function errormsg() { $msg = "错误原因:" . $this->getMessage() . "不是一个合法的EMAIL地址!"; $msg.= "错误文件名:" . $this->getFile(); $msg.= "错误行数:" . $this->getLine(); echo $msg; } } $email = "email…..@chhua.com"; try { //触发异常 checkEmail($email); } //捕获异常 catch(checkEmailException $e) { $e->errormsg(); } //==================================多个异常的捕获 echo "<br>===================================================<br>"; class ex1 extends Exception { //定义一个异常类 public function msg() { $msg = "错误原因:" . $this->getMessage() . "大于100<br>"; $msg.= "错误文件:" . $this->getFile() . "<Br>"; $msg.= "错误代码:" . $this->getCode() . "<br>"; $msg.= "行数:" . $this->getLine() . "<br>"; echo $msg; } } class ex2 extends Exception { //定义一个异常类 public function msg() { $msg = "错误原因:" . $this->getMessage() . "等于100<br>"; $msg.= "错误文件:" . $this->getFile() . "<Br>"; $msg.= "行数:" . $this->getLine() . "<br>"; echo $msg; } } $num2 = 100; try { if ($num2 > 100) { //当条件满足时触发 throw new ex1($num2); } if ($num2 == 100) { //当条件满足时触发 throw new ex2($num2); } } catch(ex2 $e) { //捕获触发的异常 $e->msg(); } catch(ex1 $e) { //捕获触发的异常 $e->msg(); } ?>
文章地址:
转载随意^^请带上本文地址!

핫 AI 도구

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

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

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

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

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

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

뜨거운 주제









PHP는 웹사이트에 강력하고 동적인 기능을 제공하는 널리 사용되는 서버측 프로그래밍 언어입니다. 그러나 실제로 개발자는 다양한 오류와 예외를 접할 수 있습니다. 일반적인 오류 중 하나는 PHPFatalerror:UncaughtException'Exception'입니다. 이번 글에서는 이 오류의 원인과 해결 방법을 살펴보겠습니다. 예외(Exception)의 개념 PHP에서 예외(Exception)는 프로그램 실행 과정에서 발생하는 예상치 못한 상황을 의미합니다.

PHP 예외 처리 팁: try...catch 블록을 사용하여 여러 예외를 포착하고 처리하는 방법 소개: PHP 애플리케이션 개발에서 예외 처리는 매우 중요한 부분입니다. 코드에서 오류나 예외가 발생할 경우 합리적인 예외 처리를 통해 프로그램의 견고성과 신뢰성을 향상시킬 수 있습니다. 이 문서에서는 try...catch 블록을 사용하여 여러 예외를 캡처하고 처리하는 방법을 소개하여 개발자가 보다 유연하고 효율적인 예외 처리를 수행하는 데 도움을 줍니다. 예외 처리 소개예외는 프로그램이 실행 중일 때 발생하는 오류 또는 특수 상황을 나타냅니다. 예외가 발생한 경우

PHP 코드를 작성할 때 예외 처리는 코드를 더욱 강력하고 유지 관리하기 쉽게 만드는 데 필수적인 부분입니다. 그러나 예외 처리도 주의해서 사용해야 합니다. 그렇지 않으면 더 많은 문제가 발생할 수 있습니다. 이 기사에서는 예외 처리를 더 잘 활용하여 코드 품질을 향상시키는 데 도움이 되는 PHP 프로그램의 예외 분류에 대한 몇 가지 모범 사례를 공유하겠습니다. 예외의 개념 PHP에서 예외란 프로그램이 실행 중일 때 발생하는 오류나 예상치 못한 상황을 의미합니다. 일반적으로 예외로 인해 프로그램 실행이 중지되고 예외 메시지가 출력됩니다.

PHP의 예외 처리 및 내결함성 메커니즘을 사용하는 방법은 무엇입니까? 소개: PHP 프로그래밍에서는 예외 처리 및 내결함성 메커니즘이 매우 중요합니다. 코드 실행 중에 오류나 예외가 발생하면 예외 처리를 사용하여 이러한 오류를 캡처하고 처리하여 프로그램 안정성과 신뢰성을 보장할 수 있습니다. 이 기사에서는 PHP의 예외 처리 및 내결함성 메커니즘을 사용하는 방법을 소개합니다. 1. 예외 처리에 대한 기본 지식: 예외란 무엇입니까? 예외는 구문 오류, 런타임 오류, 논리 오류 등을 포함하여 코드 실행 중에 발생하는 오류 또는 비정상적인 조건입니다. 다를 때

PHP 백엔드 함수 개발에서 전역 예외 처리를 구현하는 방법은 무엇입니까? PHP 백엔드 개발에서 예외 처리는 매우 중요한 부분입니다. 이는 프로그램의 오류를 포착하고 적절하게 처리하는 데 도움이 되어 시스템 안정성과 성능을 향상시킬 수 있습니다. 이 기사에서는 PHP 백엔드 함수 개발에서 전역 예외 처리를 구현하는 방법을 소개하고 해당 코드 예제를 제공합니다. PHP는 예외 처리 메커니즘을 제공하고 try 및 catch 키워드를 통해 예외를 적절하게 처리할 수 있습니다. 전역 예외 처리는 모든 것을 의미합니다.

PHP에서는 시도, 캐치, 마지막으로 키워드를 통해 예외 처리가 이루어집니다. 1) 시도 블록은 예외를 던질 수있는 코드를 둘러싸고 있습니다. 2) 캐치 블록은 예외를 처리합니다. 3) 마지막으로 블록은 코드가 항상 실행되도록합니다. 4) 던지기는 수동으로 예외를 제외하는 데 사용됩니다. 이러한 메커니즘은 코드의 견고성과 유지 관리를 향상시키는 데 도움이됩니다.

API 사용이 점점 더 광범위해짐에 따라 API 개발 및 사용 중에 데이터 예외 및 오류 처리 전략도 고려해야 합니다. 이 기사에서는 API를 구현할 때 PHP가 이러한 문제를 처리하는 방법을 살펴보겠습니다. 1. 데이터 이상 처리 데이터 이상 현상에는 사용자 입력 오류, 네트워크 전송 오류, 내부 서버 오류 등 다양한 원인이 있을 수 있습니다. PHP로 개발할 때 다음 방법을 사용하여 데이터 예외를 처리할 수 있습니다. 적절한 HTTP 상태 코드를 반환합니다. HTTP 프로토콜은 우리에게 도움이 될 수 있는 많은 상태 코드를 정의합니다.

PHP 시간 처리 예외: 시간 반환 시 오류가 발생했습니다. 웹 개발에서는 시간 처리가 매우 일반적인 요구 사항입니다. 일반적으로 사용되는 서버측 스크립팅 언어인 PHP는 풍부한 시간 처리 기능과 방법을 제공합니다. 그러나 실제 응용에서는 코드 오류나 부적절한 사용으로 인해 반환 시간이 잘못된 비정상적인 상황이 발생하는 경우가 있습니다. 이 글에서는 반환 시간 오류를 일으킬 수 있는 몇 가지 일반적인 상황을 소개하고 독자의 이해를 돕기 위해 몇 가지 구체적인 코드 예제를 제공합니다.
