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

C# 使用try/catch设置布尔变量是个好主意吗?,c#,try-catch,C#,Try Catch,我有一个简单的例子,在这种情况下我的try-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;

我有一个简单的例子,在这种情况下我的try-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));
    }
}

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

  • 将用于将图像添加到列表中的代码移动到
    try
    。没有理由把它放在外面
    try
    /
    catch
  • 添加一些报告或其他方法来处理错误。例如,向列表中添加一些占位符图像

将预期错误与意外错误分开也是一个好主意。您的
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);
    }
}

可以吗?当然-但你绝对不知道为什么会有错误-这通常比知道是否有错误更重要。所以在这种情况下,不,我不会说它特别有用。