PHP try catch块没有捕获

JRs*_*Rsz 8 php exception file try-catch

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

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

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

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

警告:fopen(uploads/Testdatensatz_Bewerbungenn.csv):无法打开流:第11行的[...]\bewerbungToDB.php中没有此类文件或目录

Joh*_*nde 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");
}
Run Code Online (Sandbox Code Playgroud)

  • `echo"错误".$ hi-> getMessage();`;-)得到*真实的原因 (3认同)