處理異常在
以下4段代碼為我在waylife項目中的簡單應用(非生產環境),不健壯也不美化,但該SNS項目早已經夭折。
1、異常類的層級關系:
- class NotFoundException extends Exception{}
- class InputException extends Exception{}
- class DBException extends Exception{}
2、配置未捕捉異常的處理器:
- function exception_uncaught_handler(Exception $e) {
- header('Content-type:text/html; charset=utf-8');
- if ($e instanceof NotFoundException)
- exit($e->getMessage());
- elseif ($e instanceof DBException)
- exit($e->getMessage());
- else
- exit($e->getMessage());
- }
- set_exception_handler('exception_uncaught_handler');
3、在數據庫連接代碼,手動拋出DBException異常但未使用try…catch進行捕獲處理,該異常將被PHP自定義異常處理器exception_uncaught_handler()函數處理:
- $this->resConn = mysql_connect ($CONFIGS['db_host'], $CONFIGS['db_user'], $CONFIGS['db_pwd']);
- if (false == is_resource($this->resConn))
- throw new DBException('數據庫連接失敗。'.mysql_error($this->resConn));
4、業務邏輯一瞥:
- if (0 != strcmp($curAlbum->interest_id, $it))
- throw new NotFoundException('很抱歉,你所訪問的相冊不存在');
以上就是PHP自定義異常處理器的具體使用方法。