我知道,我们可以使用try-catch块来处理异常。但我对Try-Catch的用法有一些怀疑。它们之间的区别是什么
try
{
//Some code
}
catch
{
}和
try
{
//Some code
}
catch(Exception)
{
}和
try
{
//Some code
}
catch(Exception oops)
{
}在我的程序中,我需要捕获所有异常,但我不想记录它们。从上面提到的Try-Catch块中,应该使用哪一个?
发布于 2013-04-08 16:32:59
从Framework2.0开始,使用不带参数的catch不再有用,因为所有非托管异常都包装在托管异常中。在此之前,您可以使用它来捕获非托管代码引发的异常。
如果不想使用异常中的任何信息,可以只指定异常的类型,但通常需要为它指定一个名称,以便可以获取信息:
try {
// some code
} catch(Exception) {
// i don't care about any information in the Exception object, just the type
}与
try {
// some code
} catch(Exception ex) {
// use some information from the exception:
MessageBox.Show("Internal error", ex.Message);
}您应该始终尝试使用尽可能具体的异常类型,因为这样可以更容易地处理异常。然后,您可以添加不太具体的类型来处理其他异常。示例:
try {
// some database code
} catch(SqlException ex) {
// something in the database call went wrong
} catch(Exception ex) {
// something else went wrong
}发布于 2013-04-08 16:29:30
到目前为止,您使用的是catch (Exception),第一个和第二个是相同的。在这种情况下,您可以捕获所有内容。当你想捕捉像UnauthorizedAccessException这样的特定异常时,你必须使用第二个异常,如下所示:
try
{
//Some code
}
catch (UnauthorizedAccessException)
{
MessageBox.Show(oops.Message);
}在第三种情况下,您可以通过变量oops使用异常。
例如:
try
{
//Some code
}
catch (Exception oops)
{
MessageBox.Show(oops.Message);
}或者有一个特定的例外:
try
{
//Some code
}
catch (UnauthorizedAccessException oops)
{
MessageBox.Show(oops.Message);
}发布于 2013-04-08 16:30:44
泛型try catch,这将捕获任何类型的异常
try
{
//Some code
}
catch
{
}这将捕获您指定的特定类型的异常,您可以指定多个。
try
{
}
catch (UnauthorizedAccessException)
{
}这将执行与上面相同的操作,但会为您提供一个可以访问异常属性的变量。
try
{
}
catch (UnauthorizedAccessException ex)
{
}https://stackoverflow.com/questions/15874493
复制相似问题