首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >异常处理Try-Catch块差异

异常处理Try-Catch块差异
EN

Stack Overflow用户
提问于 2013-04-08 16:26:20
回答 9查看 361关注 0票数 1

我知道,我们可以使用try-catch块来处理异常。但我对Try-Catch的用法有一些怀疑。它们之间的区别是什么

代码语言:javascript
复制
   try
   {
      //Some code
   }
   catch
   {

   }

代码语言:javascript
复制
   try
   {
    //Some code
   }
   catch(Exception)
   {

   }

代码语言:javascript
复制
   try
   {
    //Some code
   }
   catch(Exception oops)
   {

   }

在我的程序中,我需要捕获所有异常,但我不想记录它们。从上面提到的Try-Catch块中,应该使用哪一个?

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2013-04-08 16:32:59

从Framework2.0开始,使用不带参数的catch不再有用,因为所有非托管异常都包装在托管异常中。在此之前,您可以使用它来捕获非托管代码引发的异常。

如果不想使用异常中的任何信息,可以只指定异常的类型,但通常需要为它指定一个名称,以便可以获取信息:

代码语言:javascript
复制
try {
  // some code
} catch(Exception) {
  // i don't care about any information in the Exception object, just the type
}

代码语言:javascript
复制
try {
  // some code
} catch(Exception ex) {
  // use some information from the exception:
  MessageBox.Show("Internal error", ex.Message);
}

您应该始终尝试使用尽可能具体的异常类型,因为这样可以更容易地处理异常。然后,您可以添加不太具体的类型来处理其他异常。示例:

代码语言:javascript
复制
try {
  // some database code
} catch(SqlException ex) {
  // something in the database call went wrong
} catch(Exception ex) {
  // something else went wrong
}
票数 2
EN

Stack Overflow用户

发布于 2013-04-08 16:29:30

到目前为止,您使用的是catch (Exception),第一个和第二个是相同的。在这种情况下,您可以捕获所有内容。当你想捕捉像UnauthorizedAccessException这样的特定异常时,你必须使用第二个异常,如下所示:

代码语言:javascript
复制
try
{
    //Some code
}
catch (UnauthorizedAccessException)
{
    MessageBox.Show(oops.Message);
}

在第三种情况下,您可以通过变量oops使用异常。

例如:

代码语言:javascript
复制
try
{
    //Some code
}
catch (Exception oops)
{
    MessageBox.Show(oops.Message);
}

或者有一个特定的例外:

代码语言:javascript
复制
try
{
    //Some code
}
catch (UnauthorizedAccessException oops)
{
    MessageBox.Show(oops.Message);
}
票数 2
EN

Stack Overflow用户

发布于 2013-04-08 16:30:44

泛型try catch,这将捕获任何类型的异常

代码语言:javascript
复制
try
{
   //Some code
}
catch
{

}

这将捕获您指定的特定类型的异常,您可以指定多个。

代码语言:javascript
复制
try
{

}
catch (UnauthorizedAccessException)
{

}

这将执行与上面相同的操作,但会为您提供一个可以访问异常属性的变量。

代码语言:javascript
复制
try
{

}
catch (UnauthorizedAccessException ex)
{

}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15874493

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档