很多站长朋友们都不太清楚php如何实现异常,今天小编就来给大家整理php如何实现异常,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 如何处理 PHP 的错误与异常 2、 php 异常处理 如何捕获异常??必须要抛出才可以吗? 3、 如何组织 PHP 中的异常 4、 PHP异常处理的疑惑 5、 PHP5中的异常处理详解[1] 6、 php的异常处理,一个try代码块中抛出了多个异常,怎么全都捕获,并输出来?下面的代码为只输出一个异常? 如何处理 PHP 的错误与异常注册好自己的异常处理函数,可以捕获出现的异常,一般写框架的时候比较喜欢用。
set_error_handler('suda\\core\\System::uncaughtError');
set_exception_handler('suda\\core\\System::uncaughtException');
php 异常处理 如何捕获异常??必须要抛出才可以吗?难道php里面就非得用throw才能捕获异常吗
==============
是的.异常捕获不是用来处理语法错误,不是用来处理fatal
error,更不是用来处理die()的。它只能用来处理throw出来的异常。
如何组织 PHP 中的异常try catch组织php的异常
try{
throw new Exception("error");
}catch(Exception $e){
echo "Message: ".$e->getMessage();
}
在 try 代码块中执行代码,并根据需要通过 throw 来抛出异常。
每一个 throw 对应一个 catch , try 代码块中通过throw抛出的异常会被 catch 代码块接收到,并创建一个包含异常信息的对象 ($e)。
通过从这个 exception 对象调用 $e->getMessage(),输出来自该异常的错误消息。
注:当 try 代码块执行到了 throw 后,try代码块不会再继续执行,转而调到 catch 代码块,与函数封装中的 return 有相似作用。
最后,异常处理能提高程序的健壮性,增强可维护性,有利于异常的集中处理,从而保证程序的可靠性。
PHP异常处理的疑惑SQL错误是捕获不了的,因为PHP只要成功的把SQL命令提交给了数据库服务器就算成功,至于数据库里面执行是否成功,必需在每个语句之后检测,例如:
$db=mysql_connect(...);
if (!$db){
echo '连接数据库失败,错误原因:'.mysql_error();
exit;
}
再如:
$sql='...';
$res=mysql_query($sql);
if (!$res){
echo '执行SQL语句错误,SQL语句:'.$sql.'<br>错误原因:'.mysql_error();
exit;
}
PHP5中的异常处理详解[1]首先是try catch
〈?php $path = D:\\\\in txt ; try //检测异常 { file_open($path); } catch(Exception $e) //捕获异常 { echo $e 〉getMessage(); }
function file_open($path) { if(!file_exists($path)) //如果文件无法找到 抛出异常对象 { throw new Exception( 文件无法找到 ); }
if(!fopen($path r )) //如果文件无法打开 抛出异常对象 { throw new Exception( 文件无法打开 ); } } ?〉
注意用$e 〉getMessage()输出异常信息
输出异常完整信息
〈?php $path = D:\\\\in txt ;
try { file_open($path); //尝试打开文件 } catch(Exception $e) { echo 异常信息 $e 〉getMessage() \\n ; //返回用户自定义的异常信息 echo 异常代码 $e 〉getCode() \\n ; //返回用户自定义的异常代码 echo 文件名 $e 〉getFile() \\n ; //返回发生异常的PHP程序文件名 echo 异常代码所在行 $e 〉getLine() \\n ; //返回发生异常的代码所在行的行号 echo 传递路线 ; print_r($e 〉getTrace()); //以数组形式返回跟踪异常每一步传递的路线 echo $e 〉getTraceAsString(); //返回格式化成字符串的getTrace函数信息 }
function file_open($path) { if(!file_exists($path)) //如果文件不存在 则抛出错误 { throw new Exception( 文件无法找到 ); }
if(!fopen($path r )) { throw new Exception( 文件无法打开 ); } } ?〉
3 扩展异常 即自定义异常
〈?php class FileExistsException extends Exception{} //用于处理文件不存在异常的类 class FileOpenException extends Exception{} //用于处理文件不可读异常的类
$path = D:\\\\in txt ;
try { file_open($path); } catch(FileExistsException $e) //如果产生FileExistsException异常则提示用户确认文件位置 { echo 程序在运行过程中发生了异常 $e 〉getMessage() \\n ; echo 请确认文件位置 ; } catch(FileOpenException $e) //如果产生FileOpenException异常则提示用户确认文件的可读性 { echo 程序在运行过程中发生了异常 $e 〉getMessage() \\n ; echo 请确认文件的可读性 ; } catch(Exception $e) { echo [未知异常] ; echo 异常信息 $e 〉getMessage() \\n ; //返回用户自定义的异常信息 echo 异常代码 $e 〉getCode() \\n ; //返回用户自定义的异常代码 echo 文件名 $e 〉getFile() \\n ; //返回发生异常的PHP程序文件名 echo 异常代码所在行 $e 〉getLine() \\n ; //返回发生异常的代码所在行的行号 echo 传递路线 ; print_r($e 〉getTrace()); //以数组形式返回跟踪异常每一步传递的路线 echo $e 〉getTraceAsString(); //返回格式化成字符串的getTrace函数信息 }
function file_open($path) { if(!file_exists($path)) { throw new FileExistsException( 文件无法找到 ); //抛出FileExistsException异常对象 }
if(!fopen($path r )) { throw new FileOpenException( 文件无法打开 ); //抛出FileOpenException异常对象
lishixinzhi/Article/program/PHP/201311/21471
php的异常处理,一个try代码块中抛出了多个异常,怎么全都捕获,并输出来?下面的代码为只输出一个异常?你还没有理解PHP中异常处理的机制,像你这种情况肯定只会输出一个异常的,不可能输出两个的,当你的 $error1 被抛出异常后,代码直接终止执行,所以下面的异常不会再抛出的,你当然只能获取到一个异常信息。
关于php如何实现异常的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。
查看更多关于php如何实现异常 php异常处理方法的详细内容...