php中十分处理措施小结

2019-07-25 07:52栏目:编程学习

一、错误处理 不行管理: 意外,是在程序运维进程中发生的意料那外的事,使用特别变动脚本符合规律流程
PHP5中的一个新的机要特色

正文实例总计了php中十二分管理方法。分享给我们供大家参谋。具体剖析如下:

复制代码 代码如下:

当卓殊被触发时,经常会发生:在PHP5中增添了近似于其余语言的错误特别管理模块。在 PHP代码中所发生的十分可被 throw语句抛出并被 catch 语句捕获。必要展开丰裕管理的代码都必须归入 try 代码块内,以便捕获大概存在的十二分。每二个 try 至少要有贰个与之相应的 catch。

if(){
}else{
}
try {
}catch(非常对象){
}

使用三个 catch 能够捕获差异的类所发生的非常,当 try 代码块不再抛出卓殊也许找不到 catch 能匹配所抛出的十三分时,PHP 代码就能够在跳转到最终三个 catch 的末尾继续推行。当然,PHP 允许在 catch 代码块内再一次抛出(throw)至极,当贰个那多少个被抛出时,其后(译者注:指抛出特别时所在的代码块)的代码将不会继续实践,而 PHP 就能够尝试搜索第叁个能与之相配的 catch,假使三个可怜未有被擒获,况兼又没用利用 set_exception_handler() 作相应的管理的话,那么 PHP 将会产生二个严重的不当,而且输出 Uncaught Exception ... (未捕获非常)的提示音讯.

  1. 如果try中代码没有毛病,则将try中代码试行完后就到catch后实行
    2. 假若try中代码有特别爆发,则抛出贰个非常对象(使用throw),抛出给了catch中的参数, 则在try中代码就不会再继续推行下去
    直接跳转到catch中去实行, catch中执行到位, 再持续向下实施
    细心: 提醒产生了怎么非常,那不是注重大家要专门的工作,需求在catch中化解这一个那么些, 假诺解决不了,则出去给用户
    二、自个儿定义七个非常类
    作用:便是写一个或多个章程化解当发生那几个特别时的管理方式
  2. 和睦定义拾叁分类,必须是Exception(内置类)的子类,
  3. Exception类中的只有构造方法和toString()能够重写, 另外都final
    三、管理四个特别
    温馨定义功用类时假若在措施中抛出万分

1、极度类的层级关系,代码如下:

复制代码 代码如下:

复制代码 代码如下:

class OpenFileException extends Exception {
function __construct($message = null, $code = 0){
parent::__construct($message, $code);
echo "wwwwwwwwwwwwwww<br>";
}
function open(){
touch("tmp.txt");
$file=fopen("tmp.txt", "r");
return $file;
}
}
class DemoException extends Exception {
function pro(){
echo "管理demo发生的要命<br>";
}
}
class TestException extends Exception {
function pro(){
echo "这里管理test发生的不得了<br>";
}
}
class HelloException extends Exception {
}
class MyClass {
function openfile(){
$file=@fopen("tmp.txt", "r");
if(!$file)
throw new OpenFileException("文件张开战败");
}
function demo($num=0){
if($num==1)
throw new 德姆oException("演示出非常");
}
function test($num=0){
if($num==1)
throw new TestException("测量试验出错");
}
function fun($num=0){
if($num==1)
throw new HelloException("###########");
}
}
try{
echo "11111111111111<br>";
$my=new MyClass();
$my->openfile();
$my->demo(0);
$my->test(0);
$my->fun(1);
echo "22222222222222222<br>";
}catch(OpenFileException $e){ //$e =new Exception();
echo $e->getMessage()."<br>";
$file=$e->open();
}catch(DemoException $e){
echo $e->getMessage()."<br>";
$e->pro();
}catch(TestException $e){
echo $e->getMessage()."<br>";
$e->pro();
}catch(Exception $e){
echo $e->getMessage()."<br>";
}
var_dump($file);
echo "444444444444444444444<br>";

class NotFoundException extends Exception{}

你恐怕感兴趣的文章:

  • PHP如何抛出十分管理错误
  • PHP中的错误管理、格外处理机制深入分析
  • PHP 的极度管理、错误的抛出及回调函数等面向对象的错误管理方法
  • 三个出示效果分外不易的PHP错误、至极处理类
  • 实例批注怎样在PHP的Yii框架中张开不当和足够管理
  • PHP错误和特别管理功能模块示例
  • 浅谈PHP中的错误管理和足够管理
  • PHP中布满的不当与极其管理总括大全

class InputException extends Exception{}

class DBException extends Exception{}

2、配置未捕捉十分的微管理器,代码如下:

复制代码 代码如下:

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()函数管理:

复制代码 代码如下:

$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",第2个规范化会触发极度.

5."catch" 代码块会捕获万分,并显示伏贴的不当音信.

假如未有捕获 customException,紧紧捕获了 base exception,则在那边管理特别,重新抛出极其,有的时候,当格外被抛出时,您恐怕希望以差异于规范的法子对它进行拍卖,能够在二个"catch" 代码块中另行抛出异常,代码如下:

总括:PHP十分的应用方法分三步:

先是步:定义至极类,就算不定义就用系统默许的不胜类;

第二步:当出现极度时用 throw 抛出特别,举个例子ex1($num2);非常的参数是$num2用该极其的getMessage()获取;

其三步:触发格外,用try子句,当满足条件时  throw new ex1($num);

第四步:catch捕获万分 catch (ex2 $e),也等于实例化二个概念好的拾贰分类ex2为$e;

留意,非常能够定义多少个,可是只可以触发二个,也正是说只可以用catch捕获一个格外.

宗旨非凡类,创造可抛出三个相当的函数:

复制代码 代码如下:

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();
}

仰望本文所述对大家的php程序设计具备援救。

您大概感兴趣的小说:

  • PHP的特别管理类Exception的行使及评释
  • PHP如何抛出特别管理错误
  • PHP中的错误管理、非凡处理机制分析
  • PHP中国和北美洲常管理的一部分措施整理
  • PHP 的要命管理、错误的抛出及回调函数等面向对象的错误管理方法
  • 叁个来得效果十三分不利的PHP错误、格外管理类
  • 实例讲明怎么着在PHP的Yii框架中开始展览不当和非常管理
  • PHP非凡管理Exception类
  • php5编制程序中的非常管理详细措施介绍
  • php PDO分外管理详解
  • php至极管理方法实例汇总
  • PHP十分管理定义与利用方法深入分析

版权声明:本文由威尼斯人app发布于编程学习,转载请注明出处:php中十分处理措施小结