php错误和异常
在编码的时候,我们无时无刻会遇到错误和异常,所以我们需要处理这些错误。
php的错误类型有
E_ERROR 致命的错误。会中断程序的执行
E_WARNING 警告。不会中断程序
E_NOTICE 通知,运行时通知。表示脚本遇到可能会表现为错误的情况
E_PARSE 解析错误,一般是语法错误。
E_STRICT PHP 对代码的修改建议
E_DEPRECATED 将会对在未来版本中可能无法正常工作的代码给出警告
错误
在开发模式中,我们一般需要打开error_reporting 设置为E_ALL。然后把display_errors 设置为on
如果需要记录错误日志,则需要配置log_errors.
开发者可以 通过set_error_handle()自己接管错误。
set_error_handle(function($errno,$errstr,$errfile,$errline){
})
/**
throw exceptions based on E_* error types
*/
set_error_handler(function ($err_severity, $err_msg, $err_file, $err_line, array $err_context)
{
// error was suppressed with the @-operator
if (0 === error_reporting()) { return false;}
switch($err_severity)
{case E_ERROR: throw new ErrorException ($err_msg, 0, $err_severity, $err_file, $err_line); case E_WARNING: throw new WarningException ($err_msg, 0, $err_severity, $err_file, $err_line); case E_PARSE: throw new ParseException ($err_msg, 0, $err_severity, $err_file, $err_line); case E_NOTICE: throw new NoticeException ($err_msg, 0, $err_severity, $err_file, $err_line); case E_CORE_ERROR: throw new CoreErrorException ($err_msg, 0, $err_severity, $err_file, $err_line); case E_CORE_WARNING: throw new CoreWarningException ($err_msg, 0, $err_severity, $err_file, $err_line); case E_COMPILE_ERROR: throw new CompileErrorException ($err_msg, 0, $err_severity, $err_file, $err_line); case E_COMPILE_WARNING: throw new CoreWarningException ($err_msg, 0, $err_severity, $err_file, $err_line); case E_USER_ERROR: throw new UserErrorException ($err_msg, 0, $err_severity, $err_file, $err_line); case E_USER_WARNING: throw new UserWarningException ($err_msg, 0, $err_severity, $err_file, $err_line); case E_USER_NOTICE: throw new UserNoticeException ($err_msg, 0, $err_severity, $err_file, $err_line); case E_STRICT: throw new StrictException ($err_msg, 0, $err_severity, $err_file, $err_line); case E_RECOVERABLE_ERROR: throw new RecoverableErrorException ($err_msg, 0, $err_severity, $err_file, $err_line); case E_DEPRECATED: throw new DeprecatedException ($err_msg, 0, $err_severity, $err_file, $err_line); case E_USER_DEPRECATED: throw new UserDeprecatedException ($err_msg, 0, $err_severity, $err_file, $err_line);
}
});
class WarningException extends ErrorException {}
class ParseException extends ErrorException {}
class NoticeException extends ErrorException {}
class CoreErrorException extends ErrorException {}
class CoreWarningException extends ErrorException {}
class CompileErrorException extends ErrorException {}
class CompileWarningException extends ErrorException {}
class UserErrorException extends ErrorException {}
class UserWarningException extends ErrorException {}
class UserNoticeException extends ErrorException {}
class StrictException extends ErrorException {}
class RecoverableErrorException extends ErrorException {}
class DeprecatedException extends ErrorException {}
class UserDeprecatedException extends ErrorException {}
PHP7的错误处理
PHP 7 改变了大多数错误的报告方式。error可以通过exception异常进行捕获到.不能通过try catch捕获。但是可以通过注册到set_exception_handle捕获。
Throwable
Error
Exception
try
{
// Code that may throw an Exception or Error.
}
catch (Throwable $t)
{
// Executed only in PHP 7, will not match in PHP 5
}
catch (Exception $e)
{
// Executed only in PHP 5, will not be reached in PHP 7
}
异常
捕获异常可以通过try catch 语句
try{
//异常的代码
}catch (Exception $e){
//处理异常
}finally{
//最后执行的
}
如果文章或资源对您有帮助,欢迎打赏作者。一路走来,感谢有您!
txttool.com 说一段 esp56物联 查询128 IP查询