## php 错误
### php.ini关于Error的设置
- error_reporting = E_ALL 设置php错误报告级别
- display_error = On 是否显示错误报告
- log_error = On 是否开启日志记录
- error_log = D:/www 错误日志记录位置
### Error 类别
- 语法错误:违背了程序语言的规则错误,称之为语法错误。比如不以分号结束的语句,或函数写错时都会出现语法错误。语法错误PHP会在运行前检测出来
- 运行错误:经过语法错误检测后,将开始运行PHP代码,在此发生的错误为运行时错误。常见运行错误1.加载不存在文件。2.连接数据库失败。3.远程请求失败。4.函数或类不不存在。
- 逻辑错误:逻辑错误是指软件开发工程师在业务逻辑开发中造成错误。
### 错误报告
| 值 | 常量 | 描述 |
| --- | --- | --- |
| 1 | E\_ERROR | 致命的运行时错误。这类错误一般是不可恢复的情况,例如内存分配导致的问题。后果是导致脚本终止不再继续运行 |
| 2 | E\_WARNING | 运行时警告 (非致命错误)。仅给出提示信息,但是脚本不会终止运行。 |
| 8 | E\_NOTICE | 运行时通知。表示脚本遇到可能会表现为错误的情况。 |
| 64 | E\_COMPILE\_ERROR | 致命编译时错误。类似 E\_ERROR |
| 2048 | E\_STRICT | 启用 PHP 对代码的修改建议,以确保代码具有最佳的互操作性和向前兼容性。 |
| 8192 | E\_DEPRECATED | 运行时通知。启用后将会对在未来版本中可能无法正常工作的代码给出警告。 |
| 8191 | E\_ALL | 所有错误和警告,除级别 E\_STRICT 以外。 |
### 错误处理
- 通过自定义错误与日志处理引擎,让错误处理个性化。同时有些错误是在用户访问发生的,通过日志可以更全面检测网站运行状态。
- 通过set_error_handler 捕获错误,并注册错误处理函数。一般在开发环境下显示错误信息,在生产环境下记录错误日志
## php 异常
- 异常需要手动抛出。
```
$result = new PDO() // 抛出错误
$result = new PDO('') // 抛出异常
```
### 异常和部分错误都实现了Throwable接口。
* ArithmeticError 数学运算错误
* DivisionByZeroError 除数为0的错误
* ParseError 解析代码时发生错误如调用`eval`函数时
* TypeError 函数参数类型错误,函数返回值错误
### 自定义异常类
- 需要继承系统的Exception
- 可重写Exception类的__toString方法
- 实际开发中需要根据不同业务创建处理错误的异常类,推荐使用异常来处理错误而不是PHP的错误处理机制。(可在set_error_handle中注册的方法抛出一个异常,然后走自定义异常的流程)
- linux 基础
- ln 链接
- linux 环境变量
- linux 进程查看
- nginx
- redis
- redis 安装
- php 底层原理
- php源码编译安装
- phpize文件
- php命令行
- php7 新特性
- php7 变量
- php7 生命周期
- php sapi运行模式
- php 内存管理
- php 运行机制和Zend虚拟机
- php垃圾回收
- php 基础
- php.ini
- php函数
- 面向对象
- php 文件上传
- ob缓冲和页面静态化
- php中的session
- php cURL扩展
- composer 应用
- php 错误和异常
- thinkphp
- tp6容器和依赖注入
- tp6 的服务
- tp6事件
- tp6 多应用
- tp6路由
- tp6 cache
- tp6 request
- tp6 中间件
- tp6 response
- tp6 Db
- 备忘录
- 数据库表