PHP: 异常exception

异常最常见于SDK调用中,函数执行失败时抛出异常,顺带错误码和错误信息。

先来看下PHP的异常处理相关函数:

PHP: 异常exception
public Exception::__construct() ([ string $message = "" [, int $code = 0 [, Exception $previous = NULL ]]] )

构造函数:第一个参数$message为错误信息,第二个参数$code为错误码,第三个参数$previous为前一个异常
PHP: 异常exception

函数组:

PHP: 异常exception
获取异常的错误码:
final public mixed Exception::getCode ( void )
获取异常的错误信息:
final public string Exception::getMessage ( void )
获取异常发生的文件信息:
final public string Exception::getFile ( void )
获取异常发生在文件的哪一行
final public int Exception::getLine ( void )
获取前一个异常信息:
final public Exception Exception::getPrevious ( void )
PHP: 异常exception

最常用的是getCode和getMessage函数。

实例1:

PHP: 异常exception
<?php
class test
{
    public function run($num)
    {   
        try{
            $this->process($num);
        } catch (Exception $e) {
            echo sprintf("Errno:%d Error:%s", $e->getCode(), $e->getMessage());
        }   
    }   

    public function process($num)
    {   
        switch($num) {
        case 1: throw new Exception("error", $num);break;
        default:return $num;
        }   
        return;
    }   
}

$app = new test();
$app->run(1);
PHP: 异常exception

输出:

PHP: 异常exception
Errno:1 Error:error
PHP: 异常exception

问题1:异常被抛出后之后的流程会不会执行?答案是:不会的,函数在抛出异常处返回,注意在获取异常处是会继续执行的。

实例2

PHP: 异常exception
<?php
class test
{
    public function run($num)
    {
        try{
            $this->process($num);
        } catch (Exception $e) {
            echo sprintf("Errno:%d Error:%s", $e->getCode(), $e->getMessage());
        }
    }

    public function process($num)
    {
        switch($num) {
        case 1: throw new Exception("error", $num);echo "new exception\n";break;
        default:return $num;
        }
        return;
    }
}

$app = new test();
$app->run(1);
PHP: 异常exception

输出结果:

PHP: 异常exception
Errno:1 Error:error
PHP: 异常exception

注意:throw之后的echo语句没有被执行。

 

关于更多Exception的主题说明:http://docs.oracle.com/javase/tutorial/essential/exceptions/advantages.html

PHP: 异常exception,布布扣,bubuko.com

PHP: 异常exception

上一篇:Polymer——Web Components的未来


下一篇:百度在线编辑器UEditor(v1.3.6) .net环境下详细配置教程