Flutter:在 Future 函数中使用 try/catch

Ale*_*ena 4 try-catch dart flutter imagepicker

在我的应用程序中,我想用相机拍摄图像,image_picker为此我使用了库。

这是我的代码:

import 'dart:io';

import 'package:image_picker/image_picker.dart';

Future<File> getImage() async {
   var image = await ImagePicker.pickImage(source: ImageSource.camera);

   return image;
}
Run Code Online (Sandbox Code Playgroud)

它工作正常,但如果由于某种原因相机不可用,那么它会使应用程序崩溃。所以,我认为我们可以通过在内部使用它来避免这种情况try/catch(如果我错了,请纠正我)。

我添加了try/catch,这里是更新的代码:

try {
  var image = await ImagePicker.pickImage(source: ImageSource.camera);

} catch (e) {
  print(e);
}
return image;
Run Code Online (Sandbox Code Playgroud)

我的 IDE 抛出错误,变量image未定义

问题:

  1. try/catch在这种情况下我该如何正确使用?
  2. 的确try/catch是这几样问题的方法?
  3. 是否还有其他错误/异常,我应该关心?

Tok*_*yet 6

我的 IDE 抛出错误,未定义变量图像。

先尝试解决这个问题。

更改您的代码:

try {
  var image = await ImagePicker.pickImage(source: ImageSource.camera);

} catch (e) {
  print(e);
}
return image;
Run Code Online (Sandbox Code Playgroud)

var image;
try {
  image = await ImagePicker.pickImage(source: ImageSource.camera);

} catch (e) {
  print(e);
}
return image;
Run Code Online (Sandbox Code Playgroud)

对于您的问题:

一季度。在这种情况下如何正确使用 try/catch?

A1. 我认为你做对了。

——

Q2。try/catch 是解决此类问题的方法吗?

A2。是的,一点没错。您可能想检查image_picker上的异常

——

Q3。是否还有其他错误/异常,我应该关心?

A3. 这很难知道,您应该查看源代码,或者只处理您感兴趣的异常,并让其他人成为警报(AlertDialogSnackbar...等)。