相关疑难解决方法(0)

php中try-catch的性能

在php 5中使用try-catch语句时需要考虑哪些性能影响?

我之前在网上看过一些关于这个主题的旧的,看似相互矛盾的信息.我目前必须使用的很多框架都是在php 4上创建的,并且缺少php 5的许多细节.所以,我自己在使用php的try-catchs时没有多少经验.

php performance exception-handling try-catch

58
推荐指数
5
解决办法
3万
查看次数

PHP try-catch块:它们能够捕获无效的arg类型吗?

背景:假设我有以下显然不正确的PHP:

    try{
        $vtest = '';
        print(array_pop($vtest));
    }catch(Exception $exx){}
Run Code Online (Sandbox Code Playgroud)

为了使用array_pop,$ vtest显然应该是一个数组,而不是一个字符串.然而,当我运行此代码时,会显示警告.我不希望这样,我只是希望代码无声地失败.

问题:与其他语言相比,PHP try-catch是否有一些特殊之处导致这种情况无效?

免责声明: 仅供参考,确实有其他方法可以在PHP中处理这种情况,但这些都是不可取的.这里的目标是避免:

"签名"技巧:

        $vtest = '';
        print(@array_pop($vtest)); // <-- would like to avoid this
Run Code Online (Sandbox Code Playgroud)

类型铸造:

        $vtest = '';
        $vtest = (array)$vtest;  
        print(array_pop($vtest));
Run Code Online (Sandbox Code Playgroud)

php arrays exception try-catch

14
推荐指数
2
解决办法
7412
查看次数

set_exception_handler是否意味着要替换set_error_handler?

根据PHP手册: 内部PHP函数主要使用错误报告,只有现代面向对象的扩展使用异常.但是,可以使用ErrorException将错误简单地转换为异常

ErrorException中提供的示例:

<?php
function exception_error_handler($errno, $errstr, $errfile, $errline ) {
    throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
}
set_error_handler("exception_error_handler");
Run Code Online (Sandbox Code Playgroud)

它似乎允许使用Exceptions而不是默认的错误报告.我的问题是,这是鼓励还是我们的选择?

此外,这是一个更好的做法,像上面的例子一样单独使用Exception,或者同时使用Exception(set_exception_handler)和Error reporting(set_error_handler)?

php

6
推荐指数
1
解决办法
3222
查看次数

尝试使用catch块来解压缩功能

我们的apache error_log最近填充了类似于以下内容的行(约50GB):

[Wed Feb 01 16:50:15 2012] [error] [client 123.123.123.123] PHP Warning:
unpack() [<a href='function.unpack'>function.unpack</a>]:  
 Type V: not enough input,  need 4, have 1
    in /var/www/vhosts/domain.com/httpdocs/imagecreatefrombmp.php on line 52
Run Code Online (Sandbox Code Playgroud)

imagecreatefrombmp.bmp中的第52行如下:

$COLOR = unpack("V",substr($IMG,$P,3).$VIDE);
Run Code Online (Sandbox Code Playgroud)

这条线埋在一个while循环中.

如果再次发生此问题,我希望代码安静地退出while循环.

问题是我无法自己复制问题所以我有点需要盲目解决.

我设计了以下小解决方案.它会达到目的吗?如果再次出现"Type V not input ..."错误,try catch块会捕获它并返回false吗?

    try{
        $COLOR = unpack("V",substr($IMG,$P,3).$VIDE);            
    }catch (Exception $e) {
        return FALSE;        
    }
Run Code Online (Sandbox Code Playgroud)

php

5
推荐指数
1
解决办法
3177
查看次数

TypeError vs InvalidArgumentException?

PHP 7 中的 TypeError 和 InvalidArgumentException 有什么区别?
何时抛出 TypeError 何时抛出 InvalidArgumentException?

似乎错误越来越像 PHP 7 中
的异常。划分错误和异常的边界线是什么?

php error-handling exception php-7

5
推荐指数
2
解决办法
2062
查看次数

异常和错误之间的区别?

错误和异常有什么区别?

我已经在网上和几本书中阅读了大量资源,但所提供的解释并不十分彻底.因此,我仍然感到困惑.

谢谢!

编辑: 看起来我问了两个可能令人困惑的问题.我想要回答的主要问题是错误和异常之间区别.所以,我已经编辑了上面更具体的内容.谢谢大家的回答.

php error-handling exception-handling

4
推荐指数
2
解决办法
3378
查看次数