我正在使用一个php应用程序,其中有一行是用来移动文件的。我把这个方法包含在一个try...catch块中,这样,如果抛出一个错误,就可以管理一个回滚系统。但是这个异常从来没有被捕获过,所以,renames抛出了任何类型的异常吗?我需要用另一个方法来尝试吗?
谢谢
以上代码:
try{
if(rename($archivo_salida, $ruta_archivos)){
//anything;
}
}catch (Exception $e)
//do something
}
4条答案
按热度按时间js81xvg61#
“普通”PHP函数不会抛出异常。
更改代码以模拟异常:
7xllpg7q2#
rename()
只返回true/false -没有抛出异常。http://php.net/manual/en/function.rename.php
ep6jt1vc3#
失败时返回
FALSE
。请参见http://php.net/manual/en/function.rename.php如果确实需要在重命名失败时引发异常,可以执行以下操作:
现在,您可以将其 Package 在
try {} catch {}
块中,无论您在何处调用此代码。mbjcgjjk4#
您也可以使用此答案中描述的相同方法:https://stackoverflow.com/a/43364340/563049
创建一个自定义异常类,并使用其静态构造函数方法,在
rename()
之后使用or
运算符。异常类:
用法:
注
如果您使用的是PHP 7或更高版本-您可以将静态方法
doThrow()
简单地重命名为throw()
,因为在PHP 7或更高版本中允许使用保留关键字作为方法名。