目的:学习笔记,会根据使用经验,持续补充ing
异常Exception 是所有异常的基类。
public Exception::construct(string $message,int $code,Exception $previous)
构造函数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 )
尝试克隆异常,这将导致一个致命错误。
我们继承Exception
这个基类,创建自己的异常类。
创建不同的异常类,是为了在catch
的时候,可以捕捉不同的异常,并根据不同的异常类型做不同的处理。
至于创建自己异常类的标准,可以参考 SPL 提供一系列标准异常
示例代码
try{
echo testParams('ha');
}catch (StringException $stringException) {
echo "lengthException:".$stringException->getMessage();
}catch (lengthException $lengthException) {
echo "lengthException:".$lengthException->getMessage();
}
function testParams($param) {
if(!is_string($param)) {
throw new StringException("is not string");
}
if(strlen($param) < 5) {
throw new LengthException('length is not enough');
}
return $param;
}
class LengthException extends Exception
{
}
class StringException extends Exception
{
}
在开发环境中,我们需要显示所有可能的错误,所以在php.ini
中的配置
display_errors = On #String 该选项设置是否将错误信息作为输出的一部分显示到屏幕,或者对用户隐藏而不显示
display_startup_errors = On #boolean 即使 display_errors 设置为开启, PHP 启动过程中的错误信息也不会被显示。强烈建议除了调试目的以外,将 display_startup_errors 设置为关闭。
error_reporting = -1 #boolean 即使 display_errors 设置为开启, PHP 启动过程中的错误信息也不会被显示。强烈建议除了调试目的以外,将 display_startup_errors 设置为关闭。
log_errors = On #boolean 设置是否将脚本运行的错误信息记录到服务器错误日志或者error_log之中。注意,这是与服务器相关的特定配置项。
生产环境中,我们要隐藏错误信息
display_errors = Off
display_startup_errors = Off
error_reporting = E_ALL
log_errors = On
BadFunctionCallException
如果回调引用了未定义的函数,或者如果有一些参数丢失BadMethodCallException
当一个回调方法是一个未定义的方法或缺失一些参数时会抛出该异常DomainException
如果值不符合定义的有效数据域,则抛出异常InvalidArgumentException
如果参数不是预期类型,则抛出异常LengthException
如果长度无效,则抛出异常LogicException
表示程序逻辑中的错误的异常。这种异常应该直接导致你的代码中的修复OutOfBoundsException
数组:如果值不是有效的键,则抛出异常。这表示在编译时无法检测的错误OutOfRangeException
请求非法索引时抛出异常。这表示应在编译时检测到的错误OverflowException
将元素添加到完整容器时抛出异常RangeException
在程序执行期间抛出异常以指示范围错误RuntimeException
如果只能在运行时找到的错误发生,则抛出异常UnderflowException
对空容器执行无效操作(例如删除元素)时抛出异常UnexpectedValueException
如果值与一组值不匹配,则抛出异常
- set_exception_handler
- restore_exception_handler
异常按理说是应用程序上的逻辑异常,可以通过合理的手段解决;
错误一般指语法错误、逻辑错误等
持续补充ing
参考: