PHP异常处理浅析
发布时间:2020-12-13 02:37:19 所属栏目:PHP教程 来源:网络整理
导读:《:PHP异常处理浅析》要点: 本文介绍了:PHP异常处理浅析,希望对您有用。如果有疑问,可以联系我们。 PHP实例 PHP预定了两个非常类:Exception和ErrorException 代码如下: Exception { ??? /* 属性 */ ??? protected string $message ; //异常消息内容 ??
《: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可以.
代码如下:
//请根据实际扩展非常类 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实例可对好比下:
代码以下:
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为您提供精彩教程。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |