【发布时间】:2021-06-02 02:47:39
【问题描述】:
我不明白使用 try 和 catch 处理错误的意义。 (C#) 在我的在线课程中,使用了以下示例:
class Program
{
static void Main(string[] args)
{
try
{
int[] numbers = new int[3];
numbers[1] = 0;
numbers[2] = 1;
numbers[3] = 2;
numbers[4] = 3;
}
catch(IndexOutOfRangeException ex)
{
Console.WriteLine(ex.Message);
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
}
Console.ReadKey();
}
}
这是一个非常简单的例子,但我为什么要这样做呢?
我是新手...我正在学习 C# 编码...但我尝试以这种方式学习它,在最好的情况下不会发生任何错误。
为什么我会尝试捕获这样的异常而不是
run the programm -> "Ah there is a exeption" -> and then fix it?
【问题讨论】:
-
好吧,如果你的程序在生产中运行,你不能修复它。因为它正在运行。因此,您可以告诉您的程序如何处理异常——例如,告诉用户他们的输入无效,或者重新启动连接——而不仅仅是......你知道的——崩溃。或者您可能希望自动记录异常,以便您可以看到发生了什么,但用户不会被他们不理解的技术错误消息弄糊涂。
-
你写是为了捕捉错误,所以当它们发生时你不会在这之后破坏你的部分代码。如果您想捕获 1 个错误并执行失败以外的操作(可能只是捕获它但继续),但您仍想捕获错误,您可以像示例中一样编写 2 catch。第二个可能会导致失败。你写它们是为了捕捉意想不到的东西,如果你知道每一个可能的结果/输入,那么你就不需要它,但这是不可能知道的。
-
异常本质上是异常你有正确的心态,努力避免所有可以想象的异常,但是(我要补充)为不可预见的事件做好准备并尽量避免崩溃,如果可能的话。
-
并非所有异常都是错误,可能是网络连接丢失或其他数百万个原因。通常你不希望你的程序崩溃。相反,您希望记录此错误并以易于理解的语言告知用户发生了什么以及他现在可以做什么。也许你还想实现一个retry-pattern。