Exception.class.php
1.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006-2014 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com>
// +----------------------------------------------------------------------
namespace Think;
/**
* ThinkPHP系统异常基类
*/
class Exception extends \Exception
{
// 是否提示给用户, 有自定义错误号的, 都认为是显示给用户的错误提示
protected $_is_show = true;
/**
* 异常构造方法
*
* @param string $message 异常详情
* @param string $code 异常错误号
* @param string $previous 前一个异常
*/
public function __construct($message = null, $code = null, $previous = null)
{
// 如果是语言
if (preg_match('/^[\w+\.\_]+$/i', $message)) {
$message = L($message);
}
// 记录日志
Log::write($message . "(No:{$code})");
// 判断是否有错误编号
if (preg_match('/^(\s*\d+\s*):/', $message)) {
$this->_is_show = true;
$pos = stripos($message, ':');
$ncode = substr($message, 0, $pos);
$message = substr($message, $pos + 1);
// list($ncode, $message) = explode(":", $message);
// 如果错误号为空, 则取详情中得编号
if (empty($code)) {
$code = $ncode;
}
}
$code = (int)$code;
parent::__construct($message, $code, $previous);
}
// 判断是否显示
public function is_show()
{
return $this->_is_show;
}
}