php预定了两个异常类:exception和errorexception
复制代码 代码如下:
exception {
/* 属性 */
protected string $message ; //异常消息内容
protected int $code ; //异常代码号
protected string $file ; //抛出异常的文件名
protected int $line ; //抛出异常在该文件中的行号
/* 方法 */
public __construc开启tftp服务器t ([ 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 $verity ;
/* 方法 */
public __construct ([ string $message = “” [, int $code = 0 [, int $verity = 1 [, string $filename = __file__ [, int $lineno = __line__ [, exception $previous = null ]]]]]] )
final public int getverity ( 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 )
}
那么如何捕获异常?
(1)php锦鲤鱼的饲养可用try…catch…捕获异常,进行异常处理的代码必须在try代码块内。
复制代码 代码如下:
try {
throw new exception(‘exception test 1’, 1001);
} catch(exception $e) {
echo $e->getmessage().’-‘.$e->getcode();
}
(2)用户可以自定义异常处理函数[t_exception_handler],用于没用用try/catch捕获的异常。
复制代码 代码如下:
function exception_handler ( $e ) {
echo “uncaught exception: ” , $e -> getmessage (), “\n” ;
}
t_exception_handler ( ‘exception_handler’ );
throw new exception ( ‘uncaught exception’ );
echo “这行不会执行了”;
可以看到使用r_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关键词,你无需关心异常是否溢出了。
可对比如下:
复制代码 代码如下:
function dosomething() {
$resource = createresource();
try {
$result = uresource($resour北大自主招生ce);
} catch (exception $e) {
relearesource($resource);
log($e->getmessage());
exit();
}
relearesource($resource);
return $result;
}
//使用finally后
function dosomething2() {
$resource = createresource();
try {
$result = uresource($resource);
return $result;
} catch (exception $e) {
log($e->getmessage());
exit();
} finally {
relearesource($resource);
}
}
本文发布于:2023-04-06 18:36:23,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/0701ddfa7aff6b8229c16670d9b3bd7a.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:PHP异常处理浅析.doc
本文 PDF 下载地址:PHP异常处理浅析.pdf
留言与评论(共有 0 条评论) |