-
Notifications
You must be signed in to change notification settings - Fork 9.4k
/
Copy pathException.php
176 lines (154 loc) · 3.9 KB
/
Exception.php
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
<?php
/**
* Webapi module exception. Should be used in web API services implementation.
*
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Framework\Webapi;
use Magento\Framework\Exception\ErrorMessage;
use Magento\Framework\Exception\LocalizedException;
use Magento\Framework\Phrase;
/**
* Web API exception should not be used directly by any modules except for Magento_Webapi.
*
* During web API requests, all exceptions are converted to this exception,
* which is then used for proper error response generation.
*/
class Exception extends LocalizedException
{
/**#@+
* Error HTTP response codes.
*/
const HTTP_BAD_REQUEST = 400;
const HTTP_UNAUTHORIZED = 401;
const HTTP_FORBIDDEN = 403;
const HTTP_NOT_FOUND = 404;
const HTTP_METHOD_NOT_ALLOWED = 405;
const HTTP_NOT_ACCEPTABLE = 406;
const HTTP_INTERNAL_ERROR = 500;
/**#@-*/
/**#@+
* Fault codes that are used in SOAP faults.
*/
const FAULT_CODE_SENDER = 'Sender';
const FAULT_CODE_RECEIVER = 'Receiver';
/**
* Optional exception details.
*
* @var array
*/
protected $_details;
/**
* HTTP status code associated with current exception.
*
* @var int
*/
protected $_httpCode;
/**
* Exception name is used for SOAP faults generation.
*
* @var string
*/
protected $_name;
/**
* Stacktrace
*
* @var string
*/
protected $_stackTrace;
/**
* List of errors
*
* @var null|\Magento\Framework\Exception\LocalizedException[]
*/
protected $_errors;
/**
* Initialize exception with HTTP code.
*
* @param \Magento\Framework\Phrase $phrase
* @param int $code Error code
* @param int $httpCode
* @param array $details Additional exception details
* @param string $name Exception name
* @param \Magento\Framework\Exception\LocalizedException[]|null $errors Array of errors messages
* @param string $stackTrace
*
* @throws \InvalidArgumentException
*/
public function __construct(
Phrase $phrase,
$code = 0,
$httpCode = self::HTTP_BAD_REQUEST,
array $details = [],
$name = '',
$errors = null,
$stackTrace = null
) {
/** Only HTTP error codes are allowed. No success or redirect codes must be used. */
if ($httpCode < 400 || $httpCode > 599) {
throw new \InvalidArgumentException(sprintf('The specified HTTP code "%d" is invalid.', $httpCode));
}
parent::__construct($phrase, null, $code);
$this->code = $code;
$this->_httpCode = $httpCode;
$this->_details = $details;
$this->_name = $name;
$this->_errors = $errors;
$this->_stackTrace = $stackTrace;
}
/**
* Retrieve current HTTP code.
*
* @return int
*/
public function getHttpCode()
{
return $this->_httpCode;
}
/**
* Identify exception originator: sender or receiver.
*
* @return string
*/
public function getOriginator()
{
return $this->getHttpCode() < 500 ? self::FAULT_CODE_SENDER : self::FAULT_CODE_RECEIVER;
}
/**
* Retrieve exception details.
*
* @return array
*/
public function getDetails()
{
return $this->_details;
}
/**
* Retrieve exception name.
*
* @return string
*/
public function getName()
{
return $this->_name;
}
/**
* Retrieve list of errors.
*
* @return null|\Magento\Framework\Exception\LocalizedException[]
*/
public function getErrors()
{
return $this->_errors;
}
/**
* Retrieve stack trace string.
*
* @return null|string
*/
public function getStackTrace()
{
return $this->_stackTrace;
}
}