加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP异常处理浅析

发布时间:2020-12-13 02:37:19 所属栏目:PHP教程 来源:网络整理
导读:《:PHP异常处理浅析》要点: 本文介绍了:PHP异常处理浅析,希望对您有用。如果有疑问,可以联系我们。 PHP实例 PHP预定了两个非常类:Exception和ErrorException 代码如下: Exception { ??? /* 属性 */ ??? protected string $message ; //异常消息内容 ??

《:PHP异常处理浅析》要点:
本文介绍了:PHP异常处理浅析,希望对您有用。如果有疑问,可以联系我们。

PHP实例PHP预定了两个非常类:Exception和ErrorException

代码如下:

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 ) //异常追踪信息(array)
??? final public string getTraceAsString ( void ) //异常追踪信息(string)
??? public string __toString ( void ) //试图直接 将异常对象当作字符串使用时调用子函数的返回值
??? final private void __clone ( void ) //克隆异常对象时调用
}
代码如下:

ErrorException? extends Exception? {
?
??? /* 属性 */
??? protected int $severity?? ;
??? /* 办法 */
???
??? public __construct? ([ string $message? = ""? [,int $code? = 0? [,int $severity? = 1? [,string $filename? = __FILE__? [,int $lineno? = __LINE__? [,Exception? $previous? = NULL??? ]]]]]] )
??? final public int getSeverity? ( void )
??? /* 继承的办法 */
??? final public string Exception::getMessage? ( void )
??? final public Exception Exception::getPrevious? ( void )
??? final public int Exception::getCode? ( void )
??? final public string Exception::getFile? ( void )
??? final public int Exception::getLine? ( void )
??? final public array Exception::getTrace? ( void )
??? final public string Exception::getTraceAsString? ( void )
??? public string Exception::__toString? ( void )
??? final private void Exception::__clone? ( void )
}

PHP实例那么如何捕获异常?

PHP实例(1)PHP可用try...catch...捕获异常,进行异常处理的代码必需在try代码块内.

代码如下:

try {
??? throw new Exception('exception test 1',1001);
} catch(Exception $e) {
??? echo $e->getMessage().'-'.$e->getCode();
}

PHP实例(2)用户可以自定义异常处理函数[set_exception_handler],用于没用用try/catch捕捉的异常.

代码如下:

function? exception_handler ( $e ) {
??? echo? "Uncaught exception: "?,? $e -> getMessage (),? "n" ;
}
?
set_exception_handler ( 'exception_handler' );
?
throw new? Exception ( 'Uncaught Exception' );
?
echo "这行不会执行了";

PHP实例可以看到使用ser_exception_handler回调函数处理异常,后续的代码不会继续执行,但try-catch可以.
(3)PHP可用多catch捕捉不同类型异常,并允许在catch代码块内再次抛出异常.

代码如下:

//请根据实际扩展非常类
class MyException extends Exception {
??? public function __construct($message = '',$code = 0) {
?
??? }
?
??? public function myFunction() {
??????? echo 'just for test';
??? }
}
?
try {
??? throw new MyException('an error');
} catch (MyException $e) {
??? echo $e->myFunction();
} catch (Exception $e) {
??? echo $e->getMessage();
}

(4)PHP5.5已经支持finally关键词,你无需关心非常是否溢出了.

PHP实例:PHP异常处理浅析

PHP实例可对好比下:

代码以下:

function doSomething() {
??? $resource = createResource();
??? try {
??????? $result = useResource($resource);
??? } catch (Exception $e) {
??????? releaseResource($resource);
??????? log($e->getMessage());
??????? exit();
??? }
??? releaseResource($resource);
??? return $result;
}
?
//使用finally后
function doSomething2() {
??? $resource = createResource();
??? try {
??????? $result = useResource($resource);
??????? return $result;
??? } catch (Exception $e) {
??????? log($e->getMessage());
??????? exit();
??? } finally {
??????? releaseResource($resource);
??? }
}

《:PHP异常处理浅析》是否对您有启发,欢迎查看更多与《:PHP异常处理浅析》相关教程,学精学透。编程之家 52php.cn为您提供精彩教程。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读