我想知道哪个代码更有效,意味着更快更好可靠。 当我的客户端将数据发布到我的网站时,我不允许他们使用除字母数字字符以外的任何其他内容,因为不需要其他人。 我的问题是,一个例外会更快,更可靠吗?或者我应该远离这个目的的例外? 这是我的代码。
正常方式 -
function checkStr ($str)
{
if (preg_match('/[^0-9a-zA-Z]/', $str) > 0))
{
return false;
}
else
{
return true;
}
}
if (checkStr($_POST['field']) == true)
{
//continue
}
else
{
echo "Invalid characters";
}
例外 -
function checkStr ($str)
{
if (preg_match('/[^0-9a-zA-Z]/', $str) > 0)
{
throw new Exception('Invalid characters');
}
return true;
}
try
{
checkStr($_POST['field']);
//no exception, continue with code
}
catch (Exception $e)
{
echo $e->getMessage();
}
}
答案 0 :(得分:2)
虽然Exceptions会有一些性能开销,但性能并不是唯一的标准。还要考虑代码大小和复杂性以及整体可维护性。
我经常遇到代码,其中未检查方法的返回值,因此忽略错误。
哪种代码更容易理解
if ( do this )
if (do that)
if (something else)
OK
else
bad something
else
bad that
else
bad this
或有例外
try
do this
do that
something else
catch
report error
我不是一个php程序员,但在Java中我倾向于使用异常很多。
答案 1 :(得分:0)
异常与正常的程序流控制功能(if,else,elseif等)相关的开销更多,因此从这个角度来看,第一个选项更快。例外是棘手的事情,因为它们是PHP的一个相对较新的补充,人们倾向于过度使用它们。通常,当代码中出现的情况异常时,我会尝试仅抛出异常。
例如,如果我有一个函数,其中有效输入是整数1-100,那么我输入40时返回true,输入493时返回false,并输入异常输入“金橘”
顺便说一句,你可以在一行中编写函数的第一个版本:
function checkStr ($str)
{
return (preg_match('/[^0-9a-zA-Z]/', $str) > 0));
}