图书馆类
Library.php
<?php
namespace Namepp\Exa;
class Library
{
// Check if this token has expired.
if (isset($payload) {
throw new ExpiredException('Expired!');
}
异常类 ExpiredException.php
<?php
namespace Namepp\Exa;
class ExpiredException extends \UnexpectedValueException
{
}
我如何使用自己的系统,我使用composer自动加载库。
<?php
use \Namepp\Exa\Library;
class ControllerLit extends Controller {
public function index() {
try{
$example= Library::callThis();
}catch(Exception $e){
echo 'Caught exception: ', $e->getMessage(), "\n";
}
当我运行此文件时,我收到以下错误
致命错误:未捕获异常'\ Namepp \ Exa \ ExpiredException' 消息'已过期!'在 C:\ www \ project \ vendor \ namepp \ exa \ src \ Library.php:119堆栈跟踪:#0
我的目标是我没有致命错误,我希望我的脚本能够在捕获后继续。我错过了什么?
谢谢!
答案 0 :(得分:2)
你在全球空间(我看到没有namespace
声明)。在这种情况下,当您调用该类时,您有两个选项:
use
运算符在第一种情况下
<?php
use \Namepp\Exa\Library;
use Namepp\Exa\ExpiredException;
class ControllerLit extends Controller {
/* ... */
try{
$example= Library::callThis();
} catch( ExpiredException $e){
echo 'Caught exception: ', $e->getMessage(), "\n";
}
}
在第二种情况下
try{
$example= Library::callThis();
} catch( \Namepp\Exa\ExpiredException $e){
echo 'Caught exception: ', $e->getMessage(), "\n";
}
答案 1 :(得分:1)
您应该考虑在try / catch中使用特定的异常类:
<?php
use Namepp\Exa\Library;
use Namepp\Exa\ExpiredException;
class ControllerLit extends Controller {
public function index() {
try {
$example= Library::callThis();
} catch (ExpiredException $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}
}
}
答案 2 :(得分:0)
我参加晚会很晚,但是,对于未捕获的例外情况,可以使用以下方法。
在关闭大括号的类之后始终加载的任何文件中(可能是类控制器),添加以下内容。
// A user-defined exception handler function
function uncaught_exception_handler($e) {
echo '<b>Uncaught Exception</b> ' . $e->getMessage() . ': ' . $e->getFile() . '(' . $e->getLine() . ')';
}
// Set user-defined exception handler function
set_exception_handler('uncaught_exception_handler');
上此页代码的修改
它们几乎涵盖了所有内容,但是我更喜欢在报告中包括文件和行号,这样我就可以快速解决此问题而无需深入研究多个文件,就像处理跨越多个文件的类模式时通常是这种情况和路径。