使用try / catch设置布尔变量是个好主意吗?

时间:2016-01-25 21:21:02

标签: c# try-catch

我有一个简单的案例,是我的尝试catch在这种情况下有用吗?我的意思是try / catch可用于将布尔值设置为false

foreach (string file in filePaths) {
    bool err = false;
    BitmapImage img = null;
    try {
        img = new BitmapImage(new System.Uri(file));
    } catch {
        err = true;
    }
    if(!err) {
        listPhotos.Add(new PhotoElement(img));
    }
}

1 个答案:

答案 0 :(得分:1)

当然,你当然可以这样做。但是,可以通过两种方式改进此代码:

  • 将用于添加图片的代码移至try。没有理由将其保留在try / catch
  • 之外
  • 添加一些报告或其他方式来处理错误。例如,将一些占位符图像添加到列表中,例如

Image not found

将预期错误与意外错误分开也是一个好主意。您的catch会捕获所有错误,这可能会掩盖代码中的问题。

foreach (string file in filePaths) {
    try {
        listPhotos.Add(new BitmapImage(new System.Uri(file)));
    } catch (FileNotFoundException fnf) {
        log.Warning("File not found: {0}", fnf);
        listPhotos.Add(ImageNotFoundBitmap);
    }
}