C#为什么抛出错误

时间:2012-03-05 13:49:39

标签: c# exception-handling try-catch throw

我没有收到throw关键字,为什么要使用它?有什么好处?

到目前为止,我已经在我的UI类中得到了这个:

try
{
  Classreference.MethodToRun();
}
catch (Exception ex)
{
  MessageBox.Show(ex.ToString(), "Message", MessageBoxButtons.OK, MessageBoxIcon.Error);
}

这有效,但我猜throw我可以让我调用的方法抛出错误而在我的UI类中捕获它?但为什么?有什么更好的呢?这样做是为了使类更面向对象还是什么?我猜我是否只是在我的UI类中捕获错误,如果我更改我正在调用的方法,我不需要更改代码,而是更改正在更改的方法中的错误消息?

4 个答案:

答案 0 :(得分:1)

您使用throw表示发生了错误或将现有错误传递到更高级别。

当您想要处理错误时使用catch(例外)。

抛出异常是对处理错误的旧程序方法的改进,您将返回错误代码。

它更好的原因是因为你可以为简单的成功案例编写你的逻辑,当出现问题时你只需抛出一个异常,在你的低级代码中没有错误处理。然后由应用程序的更高级别决定在抛出特定异常时要执行的操作。

答案 1 :(得分:1)

asawyer是对的,你需要google并阅读错误处理,这是一个广泛的主题,你只有在练习,交谈和阅读之后才能“得到它”。 throw是您可能不需要经常使用的东西,但您偶尔可以使用它来阻止不需要的行为,并为使用您的方法的程序员创建更清晰的错误。我知道这是相当做作的但是举个例子:

public string WriteToFile(FileStream fs) {
  if (fs == null) {
    throw new ApplicationException("you passed a null filestream");
  }

  // write to file
}

您可以尝试将FileStream写入文件而不进行验证,但这样做可以为使用您方法的任何人创建更易理解的错误。

答案 2 :(得分:0)

您可以使用throw关键字向更高级别的方法抛出异常。

使用这种方式,您可以偶尔更好地利用异常,例如关闭数据库访问或类似的东西。

答案 3 :(得分:0)

您在这里所做的是有效地屏蔽了您可以从异常中获得的大量信息。 您经常要做的是捕获异常,将相关信息记录到您可以查看它的位置(logfile,db,eventlog),然后使用throw(),这将保持堆栈跟踪完整,或者抛出另一个&# 34;用户友好"掩盖技术实施的例外。