PHP标准库(SPL)学习之异常类

发布于 2017-03-09 21:45:19 阅读 229

PHP中抛出异常的Exception列表,那我们就不要只使用默认的\Exception了吧!

  • BadFunctionCallException 如果回调引用了未定义的函数或缺少某些参数,则抛出异常。
  • BadMethodCallException 当一个回调方法是一个未定义的方法或缺失一些参数时会抛出该异常。
  • DomainException 如果值不符合定义的有效数据域,则抛出异常。
  • InvalidArgumentException 如果参数不是预期类型,则抛出异常。
  • LengthException 如果长度无效,则抛出异常。
  • LogicException 表示程序逻辑中的错误的异常。这种异常应该直接导致你的代码中的修复。
  • OutOfBoundsException 如果值不是有效键,则抛出异常。这表示在编译时无法检测的错误。
  • OutOfRangeException 请求非法索引时抛出异常。这表示应在编译时检测到的错误。
  • OverflowException 将元素添加到完整容器时抛出异常。
  • RangeException 在程序执行期间抛出异常以指示范围错误。通常这意味着有一个算术错误,而不是under / overflow。这是DomainException的运行时版本。
  • RuntimeException 如果只能在运行时找到的错误发生,则抛出异常。
  • UnderflowException 对空容器执行无效操作(例如删除元素)时抛出异常。
  • UnexpectedValueException 如果值与一组值不匹配,则抛出异常。通常这发生在一个函数调用另一个函数并且期望返回值是某种类型或值,不包括算术或缓冲区相关的错误。

下面我来举一个栗子演示下如何捕获异常

<?php
namespace SPL\Exceptions;

class Test1 extends \RuntimeException
{
    public function __construct($message, $code)
    {
        parent::__construct($message, $code);
    }

    public function __toString()
    {
        parent::__toString(); // TODO: Change the autogenerated stub
        echo 'sdfsdfsdf';
    }

    public function thisError()
    {
        return 'error:'.$this->getMessage();
    }
}

try{
    $one = 1;
    $two = 0;
    if($two == 0){
        throw new Test1('divide value is zero', 500);
    }
    echo $one/ $two;
} catch (Test1 $e) {
    echo $e->thisError();
}