传统phper对程序中遇到的异常处理
传统phper写代码,喜欢函数里面return false 表示程序中断执行
function test() {
if (不符合条件) {
return false;
}
return true;
}
优点: 还没发现 缺点: 俄罗斯套娃,一层一层的套,每一层都要检查返回值
try catch处理异常
使用try cache处理异常
function test() {
if (不符合条件) {
throw new Exception('error message');
}
return true;
}
如果遇到异常,使用try catch抛出,在上层捕获异常
<?php
try{
test()
}catch(Exception $e){
}
一般框架都有全局处理异常,我们可以自定义异常和自定义异常处理逻辑 比如登录验证
<?php
function checkAuth() {
if(未登录) {
throw new NologinException('用户未登陆');
}
}
全局处理异常函数
function exceptionHandle($e) {
if ($e instanceof NoLoginException) {
return ['code' => 101, 'message' => ' no login user ']
}
return ['code' => 100, 'message' => 'common error']
}
优点: 代码更加简洁,更容易定位错误和排查错误 缺点: 优点太多
|