php 异常处理

异常处理是在出现指定错误时改变脚本的执行

当异常出现时:异常代码被保存 切换到指定的脚本


当异常被抛出时,其后的代码不会继续执行,PHP 会尝试查找匹配的 "catch" 代码块。

如果异常没有被捕获,而且又没用使用 set_exception_handler() 作相应的处理的话,那么将发生一个严重的错误(致命错误),并且输出 "Uncaught Exception" (未捕获异常)的错误消息。

要避免这些问题,则要是想相对应的代码去处理

Try, throw 和 catch


function checkNum($number)
{
if($number>1)
{
throw new Exception("Value must be 1 or below");
}
return true;
}
try
{
checkNum(2);
//If the exception is thrown, this text will not be shown
echo 'If you see this, the number is 1 or below';
}

//捕获异常
catch(Exception $e)
{

echo 'Message: ' .$e->getMessage();
}

catch用来接收异常



多个异常


class customException extends Exception
{
    public function errorMessage()
    {
//error message
        $errorMsg = 'Error on line '.$this->getLine().' in '.$this->getFile()
            .': '.$this->getMessage().' is not a valid E-Mail address';
        return $errorMsg;
    }
}

$email = "someone@example.com";

try
{
    //check if
    if(filter_var($email, FILTER_VALIDATE_EMAIL) === FALSE)
    {
        //throw exception if email is not valid
        throw new customException($email);
    }
    //check for "example" in mail address
    if(strpos($email, "example") !== FALSE)
    {
        throw new Exception("$email is an example e-mail");
    }
}

catch (customException $e)
{
    echo $e->errorMessage();
}

catch(Exception $e)
{
    echo $e->getMessage();
}


设置顶层异常处理器

<?php
function myException($exception)
{
echo "<b>Exception:</b> " , $exception->getMessage();
}

set_exception_handler('myException');

throw new Exception('Uncaught Exception occurred');
?>


相关推荐

评论 抢沙发

表情