gpt4 book ai didi

php - try/catch block 中未捕获异常

转载 作者:行者123 更新时间:2023-12-02 20:42:18 25 4
gpt4 key购买 nike

是否有任何原因导致 try/catch block 不起作用?

我正在 try catch block 内调用 Magento2 API 中的一个方法,但它没有捕获异常并且执行停止,并且我看到堆栈跟踪。

这是我的代码:

        $productModel = $this->productRepository->getById( $pId );

$debpt = "";
try{
$debpt = $productModel->getCustomAttribute('depart_num')->getValue();
}
catch(\Exception $ex){
$debpt = $ex->getMessage();
}

getValue() 方法导致异常,但我的 try/catch 没有捕获它。

这是堆栈跟踪:

( ! ) Fatal error: Uncaught Error: Call to a member function getValue() on null in /var/www/nwl/app/code/Raleigh/CustomReports/Controller/Report/Generate.php on line 118
( ! ) Error: Call to a member function getValue() on null in /var/www/nwl/app/code/Raleigh/CustomReports/Controller/Report/Generate.php on line 118
Call Stack
# Time Memory Function Location
1 0.0093 383800 {main}( ) .../index.php:0
2 1.2357 12558448 Magento\Framework\App\Bootstrap->run( ??? ) .../index.php:39
3 1.2362 12560232 Magento\Framework\App\Http->launch( ) .../Bootstrap.php:258
4 2.3292 22376480 Magento\Framework\App\FrontController\Interceptor->dispatch( ??? ) .../Http.php:135
5 2.3302 22464168 Magento\Framework\App\FrontController\Interceptor->___callPlugins( ???, ???, ??? ) .../Interceptor.php:26
6 2.3302 22467712 Infortis\Cgen\Plugin\Magento\Framework\App\FrontController->aroundDispatch( ???, ???, ??? ) .../Interceptor.php:142
7 2.3305 22469480 Magento\Framework\App\FrontController\Interceptor->Magento\Framework\Interception\{closure}( ??? ) .../FrontController.php:32
8 2.3305 22469856 Magento\Framework\Interception\Chain\Chain->invokeNext( ???, ???, ???, ???, ??? ) .../Interceptor.php:138
9 2.3313 22499968 Magento\PageCache\Model\App\FrontController\BuiltinPlugin->aroundDispatch( ???, ???, ??? ) .../Chain.php:67
10 2.3314 22501304 Magento\Framework\Interception\Chain\Chain->Magento\Framework\Interception\Chain\{closure}( ??? ) .../BuiltinPlugin.php:68
11 2.3314 22501680 Magento\Framework\Interception\Chain\Chain->invokeNext( ???, ???, ???, ???, ??? ) .../Chain.php:63
12 2.3315 22504744 Magento\PageCache\Model\App\FrontController\VarnishPlugin->aroundDispatch( ???, ???, ??? ) .../Chain.php:67
13 2.3315 22504744 Magento\Framework\Interception\Chain\Chain->Magento\Framework\Interception\Chain\{closure}( ??? ) .../VarnishPlugin.php:55
14 2.3315 22505120 Magento\Framework\Interception\Chain\Chain->invokeNext( ???, ???, ???, ???, ??? ) .../Chain.php:63
15 2.3318 22517640 Magento\Framework\Module\Plugin\DbStatusValidator->aroundDispatch( ???, ???, ??? ) .../Chain.php:67
16 2.4050 22671616 Magento\Framework\Interception\Chain\Chain->Magento\Framework\Interception\Chain\{closure}( ??? ) .../DbStatusValidator.php:69
17 2.4050 22671992 Magento\Framework\Interception\Chain\Chain->invokeNext( ???, ???, ???, ???, ??? ) .../Chain.php:63
18 2.4053 22677224 Magento\Store\App\FrontController\Plugin\RequestPreprocessor->aroundDispatch( ???, ???, ??? ) .../Chain.php:67
19 2.4067 22697128 Magento\Framework\Interception\Chain\Chain->Magento\Framework\Interception\Chain\{closure}( ??? ) .../RequestPreprocessor.php:94
20 2.4067 22697504 Magento\Framework\Interception\Chain\Chain->invokeNext( ???, ???, ???, ???, ??? ) .../Chain.php:63
21 2.4067 22697544 Magento\Framework\App\FrontController\Interceptor->___callParent( ???, ??? ) .../Chain.php:70
22 2.4067 22697544 Magento\Framework\App\FrontController\Interceptor->dispatch( ??? ) .../Interceptor.php:74
23 2.6148 27411640 Raleigh\CustomReports\Controller\Report\Generate\Interceptor->dispatch( ??? ) .../FrontController.php:55
24 2.6158 27438408 Raleigh\CustomReports\Controller\Report\Generate\Interceptor->___callPlugins( ???, ???, ??? ) .../Interceptor.php:26
25 2.6303 29018384 Magento\Tax\Model\App\Action\ContextPlugin->aroundDispatch( ???, ???, ??? ) .../Interceptor.php:142
26 2.6303 29018384 Raleigh\CustomReports\Controller\Report\Generate\Interceptor->Magento\Framework\Interception\{closure}( ??? ) .../ContextPlugin.php:91
27 2.6303 29018760 Magento\Framework\Interception\Chain\Chain->invokeNext( ???, ???, ???, ???, ??? ) .../Interceptor.php:138
28 2.6367 30050392 Magento\Weee\Model\App\Action\ContextPlugin->aroundDispatch( ???, ???, ??? ) .../Chain.php:67
29 2.6367 30050392 Magento\Framework\Interception\Chain\Chain->Magento\Framework\Interception\Chain\{closure}( ??? ) .../ContextPlugin.php:112
30 2.6367 30050768 Magento\Framework\Interception\Chain\Chain->invokeNext( ???, ???, ???, ???, ??? ) .../Chain.php:63
31 2.6368 30052808 Magento\Store\App\Action\Plugin\StoreCheck->aroundDispatch( ???, ???, ??? ) .../Chain.php:67
32 2.6368 30052808 Magento\Framework\Interception\Chain\Chain->Magento\Framework\Interception\Chain\{closure}( ??? ) .../StoreCheck.php:44
33 2.6368 30053184 Magento\Framework\Interception\Chain\Chain->invokeNext( ???, ???, ???, ???, ??? ) .../Chain.php:63
34 2.6369 30055776 Magento\Customer\Model\App\Action\ContextPlugin->aroundDispatch( ???, ???, ??? ) .../Chain.php:67
35 2.6372 30081328 Magento\Framework\Interception\Chain\Chain->Magento\Framework\Interception\Chain\{closure}( ??? ) .../ContextPlugin.php:61
36 2.6372 30081704 Magento\Framework\Interception\Chain\Chain->invokeNext( ???, ???, ???, ???, ??? ) .../Chain.php:63
37 2.6373 30085880 Magento\Store\App\Action\Plugin\Context->aroundDispatch( ???, ???, ??? ) .../Chain.php:67
38 2.6448 30193896 Magento\Framework\Interception\Chain\Chain->Magento\Framework\Interception\Chain\{closure}( ??? ) .../Context.php:106
39 2.6448 30194272 Magento\Framework\Interception\Chain\Chain->invokeNext( ???, ???, ???, ???, ??? ) .../Chain.php:63
40 2.7299 30787752 Raleigh\CustomReports\Controller\Report\Generate\Interceptor->___callParent( ???, ??? ) .../Chain.php:70
41 2.7299 30787752 Raleigh\CustomReports\Controller\Report\Generate\Interceptor->dispatch( ??? ) .../Interceptor.php:74
42 2.7385 31511040 Raleigh\CustomReports\Controller\Report\Generate\Interceptor->execute( ) .../Action.php:102

我不知道如何解决这个问题。 API 类没有任何方法来检查值以避免 null 错误,并且我的 try/catch block 不起作用。

有人知道为什么 try/catch 可能不起作用吗?

最佳答案

代码没有抛出异常,而是抛出错误,这就是为什么你无法捕获它。

例如,您可以首先检查 $productModel->getCustomAttribute('depart_num') 是否为 null

if ($productModel->getCustomAttribute('depart_num') !== null) { // do your logic

或者,如果您使用的是 PHP 7+(我认为您是),您可以修改您正在捕获的内容,从现在开始 Errors are catchable :

catch (\Error $e) {

关于php - try/catch block 中未捕获异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45726543/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com