Class declared in SYSPATH/classes/view/exception.php on line 9.
string
$error_viewlink to thiserror rendering view
string(12) "kohana/error"
string
$error_view_content_typelink to thiserror view content type
string(9) "text/html"
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" )
$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
required - Error messagearray
$variables
= NULL - Translation variablesinteger|string
$code
= integer 0 - The exception codevoid
public
function
__construct(
$message
,
array
$variables
= NULL,
$code
= 0)
{
if
(defined(
'E_DEPRECATED'
))
{
// E_DEPRECATED only exists in PHP >= 5.3.0
Kohana_Exception::
$php_errors
[E_DEPRECATED] =
'Deprecated'
;
}
// Set the message
$message
= __(
$message
,
$variables
);
// Pass the message and integer code to the parent
parent::__construct(
$message
, (int)
$code
);
// Save the unmodified code
// @link http://bugs.php.net/39615
$this
->code =
$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
);
$strace
= Kohana_Exception::text(
$e
).
"\n--\n"
.
$e
->getTraceAsString();
Kohana::
$log
->add(Log::STRACE,
$strace
);
// 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: '
.Kohana_Exception::
$error_view_content_type
.
'; 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());
}