我没有收到throw
关键字,为什么要使用它?有什么好处?
到目前为止,我已经在我的UI类中得到了这个:
try
{
Classreference.MethodToRun();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString(), "Message", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
这有效,但我猜throw
我可以让我调用的方法抛出错误而在我的UI类中捕获它?但为什么?有什么更好的呢?这样做是为了使类更面向对象还是什么?我猜我是否只是在我的UI类中捕获错误,如果我更改我正在调用的方法,我不需要更改代码,而是更改正在更改的方法中的错误消息?
答案 0 :(得分:1)
您使用throw表示发生了错误或将现有错误传递到更高级别。
当您想要处理错误时使用catch(例外)。
抛出异常是对处理错误的旧程序方法的改进,您将返回错误代码。
它更好的原因是因为你可以为简单的成功案例编写你的逻辑,当出现问题时你只需抛出一个异常,在你的低级代码中没有错误处理。然后由应用程序的更高级别决定在抛出特定异常时要执行的操作。
答案 1 :(得分:1)
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;用户友好"掩盖技术实施的例外。