Kohana exception class. Translates exceptions using the I18n class.
Class declared in SYSPATH/classes/http/exception/400.php on line 3.
string
$error_viewlink to thiserror rendering view
string(12) "kohana/error"
array
$php_errorslink to thisPHP error code => human readable name
array(8) ( 1 => string(11) "Fatal Error" 256 => string(10) "User Error" 4 => string(11) "Parse Error" 2 => string(7) "Warning" 512 => string(12) "User Warning" 2048 => string(6) "Strict" 8 => string(6) "Notice" 4096 => string(17) "Recoverable Error" )
integer
$_codelink to thisHTTP 400 Bad Request
$codelink to this
$filelink to this
$linelink to this
$messagelink to thisCreates a new translated exception.
throw
new
Kohana_Exception(
'Something went terrible wrong, :user'
,
array
(
':user'
=>
$user
));
string
$message
= NULL - Status message, custom content to display with errorarray
$variables
= NULL - Translation variablesinteger
$code
= integer 0 - The http status codevoid
public
function
__construct(
$message
= NULL,
array
$variables
= NULL,
$code
= 0)
{
if
(
$code
== 0)
{
$code
=
$this
->_code;
}
if
( ! isset(Response::
$messages
[
$code
]))
throw
new
Kohana_Exception(
'Unrecognized HTTP status code: :code . Only valid HTTP status codes are acceptable, see RFC 2616.'
,
array
(
':code'
=>
$code
));
parent::__construct(
$message
,
$variables
,
$code
);
}
Magic object-to-string method.
echo
$exception
;
string
public
function
__toString()
{
return
Kohana_Exception::text(
$this
);
}
Inline exception handler, displays the error message, source of the exception, and the stack trace of the error.
Exception
$e
required - $eboolean
public
static
function
handler(Exception
$e
)
{
try
{
// Get the exception information
$type
= get_class(
$e
);
$code
=
$e
->getCode();
$message
=
$e
->getMessage();
$file
=
$e
->getFile();
$line
=
$e
->getLine();
// Get the exception backtrace
$trace
=
$e
->getTrace();
if
(
$e
instanceof
ErrorException)
{
if
(isset(Kohana_Exception::
$php_errors
[
$code
]))
{
// Use the human-readable error name
$code
= Kohana_Exception::
$php_errors
[
$code
];
}
if
(version_compare(PHP_VERSION,
'5.3'
,
'<'
))
{
// Workaround for a bug in ErrorException::getTrace() that
// exists in all PHP 5.2 versions.
// @link http://bugs.php.net/45895
for
(
$i
=
count
(
$trace
) - 1;
$i
> 0; --
$i
)
{
if
(isset(
$trace
[
$i
- 1][
'args'
]))
{
// Re-position the args
$trace
[
$i
][
'args'
] =
$trace
[
$i
- 1][
'args'
];
// Remove the args
unset(
$trace
[
$i
- 1][
'args'
]);
}
}
}
}
// Create a text version of the exception
$error
= Kohana_Exception::text(
$e
);
if
(
is_object
(Kohana::
$log
))
{
// Add this exception to the log
Kohana::
$log
->add(Log::ERROR,
$error
);
// Make sure the logs are written
Kohana::
$log
->write();
}
if
(Kohana::
$is_cli
)
{
// Just display the text of the exception
echo
"\n{$error}\n"
;
exit
(1);
}
if
( ! headers_sent())
{
// Make sure the proper http header is sent
$http_header_status
= (
$e
instanceof
HTTP_Exception) ?
$code
: 500;
header(
'Content-Type: text/html; charset='
.Kohana::
$charset
, TRUE,
$http_header_status
);
}
if
(Request::
$current
!== NULL AND Request::current()->is_ajax() === TRUE)
{
// Just display the text of the exception
echo
"\n{$error}\n"
;
exit
(1);
}
// Start an output buffer
ob_start();
// Include the exception HTML
if
(
$view_file
= Kohana::find_file(
'views'
, Kohana_Exception::
$error_view
))
{
include
$view_file
;
}
else
{
throw
new
Kohana_Exception(
'Error view file does not exist: views/:file'
,
array
(
':file'
=> Kohana_Exception::
$error_view
,
));
}
// Display the contents of the output buffer
echo
ob_get_clean();
exit
(1);
}
catch
(Exception
$e
)
{
// Clean the output buffer if one exists
ob_get_level()
and
ob_clean();
// Display the exception text
echo
Kohana_Exception::text(
$e
),
"\n"
;
// Exit with an error status
exit
(1);
}
}
Get a single line of text representing the exception:
Error [ Code ]: Message ~ File [ Line ]
Exception
$e
required - $estring
public
static
function
text(Exception
$e
)
{
return
sprintf(
'%s [ %s ]: %s ~ %s [ %d ]'
,
get_class(
$e
),
$e
->getCode(),
strip_tags
(
$e
->getMessage()), Debug::path(
$e
->getFile()),
$e
->getLine());
}