php異常處理機制

異常分類

屏幕快照 2017-05-08 下午2.58.50.png

異常是按照層級處理的,如何a調(diào)用b,在b中發(fā)生異常,正常流程是b會把異常拋給a,a如果也有try捕獲異常操作,便會在a中處理。下面基于RestFul API 給客戶端返回正常的錯誤碼格式來粗略講解異常處理機制。

  • 控制器文件:
<?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號,獲取Banner信息
        try{
            1 / 0;
        }catch (Exception $e){
            //TODO 記錄日志
            throw $e;
        }
        return 'this is banner';
    }
}
  • 客戶端返回結(jié)果
    {"error_code":10001,"msg":"Division by zero"}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容