異常分類(lèi)
屏幕快照 2017-05-08 下午2.58.50.png
異常是按照層級(jí)處理的强霎,如何a調(diào)用b夏跷,在b中發(fā)生異常宣吱,正常流程是b會(huì)把異常拋給a窃这,a如果也有try捕獲異常操作,便會(huì)在a中處理征候。下面基于RestFul API 給客戶(hù)端返回正常的錯(cuò)誤碼格式來(lái)粗略講解異常處理機(jī)制杭攻。
- 控制器文件:
<?php
/**
* Created by PhpStorm.
* User: chenzhitao
* Date: 2017/5/7
* Time: 下午1:49
*/
namespace app\api\controller\v1;
use app\api\validate\IDMustBePositiveInt;
use think\Exception;
use think\Validate;
use app\api\model\Banner as BannerModel;
class Banner
{
public function getBanner($id){
(new IDMustBePositiveInt())->goCheck();
try{
$banner = BannerModel::getBannerByID($id);
}catch (Exception $e){
$error = [
'error_code'=>10001,
'msg'=>$e->getMessage(),
];
return json($error,400);
}
return $banner;
}
}
- model文件祟敛,自制1/0異常,發(fā)現(xiàn)并拋出異常
<?php
/**
* Created by PhpStorm.
* User: chenzhitao
* Date: 2017/5/8
* Time: 下午2:15
*/
namespace app\api\model;
use think\Exception;
class Banner
{
public static function getBannerByID($id){
//TODO:根據(jù)banner ID號(hào),獲取Banner信息
try{
1 / 0;
}catch (Exception $e){
//TODO 記錄日志
throw $e;
}
return 'this is banner';
}
}
- 客戶(hù)端返回結(jié)果
{"error_code":10001,"msg":"Division by zero"}