什么是"投掷"关键字,单独使用,实际上

时间:2015-12-08 10:55:35

标签: vb.net error-handling

我已经被要求在我正在处理的应用程序的套接字层上添加一些错误处理,并且经常会遇到旧版本的代码,其中" Throw"关键字正在单独使用。例如:

Try
    'lots of code in here
Catch ex As Exception
    Throw
End Try

我认为在使用Throw关键字时,您必须将其用作语句的一部分,例如:

Throw New NotSupportedException("message for the exception", variable.ToString())

我之前从未见过它自己用过,也无法在网上找到任何简单的解释,所以我想我会把它扔到这里,看看人们的想法。可能是以前的开发人员编写的一些糟糕/不完整的编码,但我想知道它是否有用。

感谢。

3 个答案:

答案 0 :(得分:0)

您只能使用Throw而不在try ... catch语句中指定例外。其目的是允许您重新抛出异常。

查看Throw文档。

答案 1 :(得分:0)

如果您要求 throw 的目的: ![The Throw statement resets the call stack for the expression exception]

https://msdn.microsoft.com/en-us/library/ty79csek.aspx

答案 2 :(得分:0)

当我们在 catch 块中使用 throw 时,它意味着作为 rethrow-it 意味着抛出已经处理的相同异常(throw没有争论的陈述)。 请参阅下面的代码段,我们可以用不同的方式使用 throw

1

try
{
    int iCount = 100 / 0;
}
catch
{
    throw;
}

这里我们重新抛出异常(重新抛出导致catch已经将异常抛出到Catch块)

2

try
{
     int iCount = 100 / 0;
}
catch (DivideByZeroException ex)
{
    throw ex;
}

这不是重新抛出,它只是抛出相同的异常,但是使用堆栈跟踪(对象ex),这里我们可以收集有关异常的更多信息

3

 try
{
     string szApp = "Application";
         throw new Exception("custom exception");

}
catch (Exception ex)
{
    throw ex;
}

这里我们抛出自定义异常并中断程序控制