PHP try catch块没有捕获

时间:2015-01-31 20:45:19

标签: php file exception try-catch

我想用PHP打开一个文件,我要做的第一件事是检查它是否存在。因此我将它添加到try catch块中,因此脚本不会崩溃。如果文件不存在,脚本应该停止。 以下代码给出了错误消息the file could not be opened

(由于测试原因,该文件不存在)

    try
    {
        $file_handle = fopen("uploads/".$filename."","r");
    }
    catch (Exception $hi)
    {
        die("Fehler");
    }

这是我浏览器中显示的错误:

  

警告:fopen(uploads / Testdatensatz_Bewerbungenn.csv):无法打开   stream:[...] \ bewerbungToDB.php中没有这样的文件或目录   11

1 个答案:

答案 0 :(得分:15)

那不是例外。这是一个PHP警告。 Try / catch仅用于捕获异常。如果你想"赶上"那个错误你应该检查$file_handle的值,如果是false就抛出异常。

try
{
    $file_handle = @fopen("uploads/".$filename."","r");
    if (!$file_handle) {
         throw new Exception('Failed to open uploaded file');
    }
}
catch (Exception $hi)
{
    die("Fehler");
}