<?php /** * Exception.class.php * 异常 * * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @copyright Copyright (c) 2014 - ? VcySDK (http://www.vchangyi.com/) * @author zhuxun37 * @version 1.0.0 */ namespace VcySDK; class Exception extends \Exception { /** * 请求ID * * @type string */ protected $_request_id = ''; /** * SDK 错误码 * * @type string */ protected $_sdk_code = ''; /** * SDK response data * * @type string */ protected $_sdk_data = ''; /** * 异常构造方法 * * @param array|string $message 异常详情 * @param string $code 异常错误号 * @param array $data 异常错误数据 * @param string $previous 前一个异常 */ public function __construct($message = null, $code = null, $data = [], $previous = null) { if (is_array($message)) { $this->_request_id = $message['requestId']; $code = $message['code']; $message = $message['msg']; $data = $message['data']; } // 记录日志 Logger::write(sprintf('message: %s | code: %s | requestId: %s', $message, $code, $this->_request_id)); // 判断是否有错误编号 if (preg_match("/^(\s*\d+\s*):/", $message)) { $pos = stripos($message, ':'); $ncode = substr($message, 0, $pos); $message = substr($message, $pos + 1); // 如果错误号为空, 则取详情中得编号 if (empty($code)) { $code = $ncode; } } $iCode = (int)$code; parent::__construct($message, $iCode, $previous); $this->_sdk_code = $code; $this->_sdk_data = $data; } /** * 获取请求ID * * @return string */ public function getRequestID() { return $this->_request_id; } /** * 获取SDK错误码 * @return string */ public function getSdkCode() { return $this->_sdk_code; } /** * 获取SDK Data * @return string */ public function getSdkData() { return $this->_sdk_data; } }