Try-Catch-Finally c#在Console中

时间:2017-09-28 18:25:25

标签: c# try-catch try-catch-finally

我需要写一个Try-Catch-Finally。 首先是编程新手。 回到问题。

在Try-Block中,我想打开一个不存在的文本。

在Catch-Block中,Messagebox应该显示FileNotFoundException。

我仍然不知道我应该把什么放在最后一块。

shouldBe7

由于

5 个答案:

答案 0 :(得分:0)

最后是始终执行的代码。我会说使用finally块来清理可能存在的任何东西是一种常见的模式。例如,如果您有文件流...

对不起,如果类型不正确,我目前没有C#,但模式仍然存在......

FileStream file;

try {
    file = new FileStream("example.txt", FileMode.Open);
    file.open();
}
catch (Exception ex) {
    //message box here
}
finally {
    // Clean up stuff !
    if (file != null) {
        file.close()
    }
}

答案 1 :(得分:0)

catch 最终的常见用法是在尝试块中获取和使用资源,处理 catch 阻止,并释放 finally 块中的资源。有关详细信息,请查看https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/try-catch-finally

由于您只想捕获异常然后打印出一条消息,您可以简单地删除 finally 块,就像那样:

try
{
   using (FileStream File = new FileStream("beispiel.txt", FileMode.Open)){}
}
catch (FileNotFoundException fnfex)
{
   //MessageBox with fnfex
   MessageBox.Show(fnfex.Message);
}

使用语句可确保对象在超出范围时立即处理,并且不需要显式代码或最终以确保对象发生的情况。

答案 2 :(得分:0)

最后用于保证做某事的方法,即使抛出异常也是如此。在你的情况下,你可以例如处理你的流,但通常最好对实现IDisposable的对象使用using语句,所以你可以这样做

using (var stream = new FileStream(...))
{
   // do what ever, and the stream gets automatically disposed.
}

请参阅:

using statement

IDisposable

答案 3 :(得分:0)

DialogResult result;

try
{
    FileStream File = new FileStream("beispiel.txt", FileMode.Open);
}
catch (FileNotFoundException fnfex)
{
    result =
        MessageBox.Show(
            this, 

            // Message: show the exception message in the MessageBox
            fnfex.Message, 

            // Caption
            "FileNotFoundException caught", 

            // Buttons
            MessageBoxButtons.OK,
            MessageBoxIcon.Question, 
            MessageBoxDefaultButton.Button1, 
            MessageBoxOptions.RightAlign);
}
finally
{
    // You don't actually NEED a finally block

}

答案 4 :(得分:-1)

除了人们已经说过的关于尝试...抓住...最终阻止,我相信你正在寻找的是

try {
    file = new FileStream("example.txt", FileMode.Open);
    file.open();
}
catch (Exception ex) {
    MessageBox.Show(ex.Message);
}

但是你需要在项目中添加对System.Windows.Forms的引用并将using语句添加到你的类中

using System.Windows.Forms;

或者,如果您只想在控制台中显示消息,可以使用

Console.WriteLine(e.Message);

并忘记参考