我可以使用Try catch检查文件是否与image(“C:\\ filename”)一起存在

时间:2012-08-19 19:24:12

标签: c# bitmap try-catch

try 
{ 
 if (!File.Exists("File.Ext")) 
    throw new FileNotFoundException(); 

} 
catch(FileNotFoundException e) 
{ 
   // your message here. 
} 
在写这篇文章的时候,我找到了上面的代码,认为必须有一种方法在一个块中完成 我正在尝试用

检查错误读取bmp
Bitmap b2;
b2 = new Bitmap("g:\\btmp1.bmp");

因此,如果将文件分配给“b2”时出现问题,则会出现错误

string notExst = "";
Bitmap b2;
try
{
    b2 = new Bitmap("g:\\ba.bmp");
}
catch (FileNotFoundException e)
{
    throw e.Tostring(); \\ would it be ok to 
 \\ msgbox.show(e.Tostring()) insted of throw ?

}

我想我的Try Catch中出现了语法错误,这是正确的方法吗? 感谢。

编辑后 乔伊,我不明白你的答案,我希望得到通知,并相应地打破方法 而不是暗恋

最后

public bool TryGetBitMap(string FilePath)
{
    string NotExstMsg = "The file: " + FilePath + "Could Not Be Found!";
    bool exst = false;
    if (!File.Exists(FilePath))
         MessageBox.Show(NotExstMsg);
    else exst = true;
    return exst;
}

private void ButScreenCupt_Click(object sender, EventArgs e)
{

    string FilePath1 = "g:\\a.bmp";
    string FilePath2 = "g:\\b.bmp";
    Bitmap b1, b2;
    bool isSuccess1 = TryGetBitMap(FilePath1);
    bool isSuccess2 = TryGetBitMap(FilePath2);
    if (isSuccess1 && isSuccess2)
    {
        b1 = new Bitmap(FilePath1);
        pictureBox1.Image = b1;
        b2 = new Bitmap(FilePath2);
        pictureBox2.Image = b2;
        dd = ComparingImages.Compare(b1, b2);

        MessageBox.Show(dd.ToString());
    }
}

4 个答案:

答案 0 :(得分:2)

Bitmap b2;
try
{
    b2 = new Bitmap("g:\\ba.bmp");
}
catch (FileNotFoundException notExst)
{
   //enter your message here
}

无需在catch中抛出异常。

答案 1 :(得分:0)

您可以使用TryGet模式构建自己的方法。

bool isSuccess = TryGetBitMap("g:\\ba.bmp",b2);

答案 2 :(得分:0)

不要声明 notExst 变量。

答案 3 :(得分:0)

正如@Jaguar所提到的,如果Bitmap类抛出了一个FileNotFoundException,你可以捕获它。 异常处理会导致调用堆栈展开。如果您可以使用if-else语句检查文件是否存在,那将是更可取的。