flutter 在 try catch 上给我例外

flutter give me exception on try catch

try {
        jsonFile.delete();
        fileExists = false;
        print("File deleted");
      } catch(e){
        print("File does not exists!");
      }

我想在文件不存在的情况下处理异常,但它给了我这个异常: 未处理的异常:FileSystemException:无法删除文件,路径='文件路径'(OS错误:没有这样的文件或目录,errno = 2) 而不是处理它并在控制台中向我发送消息,这是正常的?

jsonFile.delete() returns 一个 Future,这意味着它将 运行 异步,因此不会将错误发送到您的 catch 块,该块 运行 是同步的。您可以等待结果:

try {
    await jsonFile.delete();
    fileExists = false;
    print("File deleted");
} catch(e){
    print("File does not exists!");
}

或者,如果你想让它保持异步,你可以在 Future 上使用 .catchError() 来捕获错误:

try {
    jsonFile.delete()
      .then((value) => print("File deleted"));
      .catchError((error) => print("File does not exist"));
    fileExists = false;
} catch(e){
    print("File does not exists!");
}

有关 Futures 和使用它们的更多信息,请参阅 this page