yaf文檔裏有關於異常類和錯誤的處理php
異常模式文檔連接:http://www.laruence.com/manual/yaf.catcherror.exception.htmlhtml
首先在application\controllers\建立一個Error.php的控制器app
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"=>'用戶名不存在', ); } }
在任意控制器測試一下this
頁面輸出spa