yaf学习之路之异常类和错误处理
yaf文档里有关于异常类和错误的处理
异常模式文档链接:http://www.laruence.com/manual/yaf.catcherror.exception.html
首先在application\controllers\创建一个Error.php的控制器
1 <?php 2 use Yaf\Controller_Abstract; 3 /** 4 * 当有未捕获的异常, 则控制流会流到这里 5 */ 6 class ErrorController extends Controller_Abstract { 7 /* public function errorAction() { 8 $exception = $this->getRequest()->getException(); 9 try { 10 $this->_view->content = $exception->getMessage(); 11 } catch (\Yaf\Exception_LoadFailed $e) { 12 echo '加载失败'; 13 } catch (\Yaf\Exception $e) { 14 echo 1111; 15 //其他错误 16 } 17 }*/ 18 19 public function init() { 20 \Yaf\Dispatcher::getInstance()->disableView(); 21 } 22 23 public function errorAction($exception) { 24 if ($exception->getCode() > 100000) { 25 //这里可以捕获到应用内抛出的异常 26 $code= $exception->getCode(); 27 $codeConfig = \Error\CodeConfigModel::getCodeConfig(); 28 if (empty($codeConfig[$code])) { 29 throw new \Exception('错误码' . $code . '的相应提示信息没有设置'); 30 } 31 $message = $codeConfig[$code]; 32 echo $message; 33 /*echo $exception->getCode(); 34 echo $exception->getMessage();*/ 35 return; 36 } 37 switch ($exception->getCode()) { 38 case 404://404 39 case 515: 40 case 516: 41 case 517: 42 //输出404 43 header(\Our\Common::getHttpStatusCode(404)); 44 echo '404'; 45 exit(); 46 break; 47 default : 48 break; 49 } 50 throw $exception; 51 } 52 }
在models/Error/CodeConfig.php
<?php namespace Error; /** * 错误码设置类 */ class CodeConfigModel { /** * 获取错误码配置 */ public static function getCodeConfig() { return array( //100xxx:用户 "100110" => "测试输出错误", "111111"=>'用户名不存在', ); } }
在任意控制器测试一下
页面输出