首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP unlink()处理异常

PHP unlink()处理异常
EN

Stack Overflow用户
提问于 2013-03-10 10:28:04
回答 7查看 51K关注 0票数 39

嗯,我一直在想我是否能正确地处理unlink()函数。我不希望unlink()函数抛出一些讨厌的错误,如果它无法取消文件链接(可能是由于找不到文件)。

我试过这样的东西

代码语言:javascript
复制
try { 
    unlink("secret/secret.txt"); 
} catch(Exception $e) { 
    print "whoops!"; 
    //or even leaving it empty so nothing is displayed
} 

但它不起作用。我不是PHP专家。我在web上的某个地方搜索并找到了这个异常处理代码。但我记得我的学生时代,Java也使用过同样的方法。所以它应该是有效的。我不知道代码有什么问题。

或者我可以简单地使用if..else语句,比如

代码语言:javascript
复制
if(unlink($file)){
  //leaving here empty must ensure that nothing is displayed
}else{
  //leaving here empty must ensure that nothing is displayed
}

但是这段代码也不能工作。我在哪里做错了?还有什么其他方法可以正确地处理它?

是否可以通过操作错误报告(PHP) (生产和开发环境)来隐藏错误??

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2013-03-10 10:32:22

unlink不会抛出异常,而是生成错误。正确的方法是在尝试对其调用unlink之前检查该文件是否存在。如果您只是担心无法输出错误,那么您应该关闭display_errors,这在生产环境中无论如何都应该这样做。然后它们就会被记录下来。

不要用@抑制错误,这是不可取的。

你能对@有更多的描述吗

我不太清楚你的确切意思。但是文档是here的。至于你为什么不想用它..。这是因为你永远不会知道代码不工作或有问题。即使代码仍然可以从功能的角度来看,它仍然有一个问题,这个问题可能会使其他东西在某个时候完全不能工作。如果你从来没有遇到过这个错误,你可能会浪费大量的调试时间。

更改日志级别或禁用错误显示是可以的,但您永远不会想要完全禁止它们。

票数 27
EN

Stack Overflow用户

发布于 2013-03-10 10:30:25

注释:这可能不会再起作用。查看Brian的评论

如果只想隐藏错误,可以这样做:

代码语言:javascript
复制
@unlink('your_file_name');

通常,在PHP中,@会抑制任何错误。

更好的方法是最小化错误概率。您已经说过,错误的可能性之一是由不存在的文件引起的。如果我是你,我会这么做:

代码语言:javascript
复制
if(file_exists('your_file_name')){
    unlink('your_file_name');
}else{
    echo 'file not found';
}

祝你好运:)

票数 41
EN

Stack Overflow用户

发布于 2016-04-23 07:05:08

您可以使用is_writable来测试您是否具有适当的权限来修改或删除文件。

http://php.net/manual/en/function.is-writable.php

代码语言:javascript
复制
try {
  if(!is_writable($file))
      throw new Exception('File not writable');

  unlink($file);
}
catch(Exception $e) { /* do what you want */ }
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15318230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档