9

//我在Catch Block中写了代码

 try {

 } catch(Excepetion ex) {
        // I have written code here If Exception Occurs then how to handle it.
 }
4

7 回答 7

8

您可以在 catch 块中放置一个 try catch,或者您可以简单地再次抛出异常。最好在 try catch 中使用finally这样即使在 catch 块中发生异常,finally 块代码也会被执行。

try
  {
  }
catch(Excepetion ex)
  {
     try
        {
        }
     catch
        {
        }
   //or simply throw;
  }
finally
{
  // some other mandatory task
}

finally 块在某些异常中可能不会被执行。您可能会看到约束执行区域以获得更可靠的机制。

于 2012-11-28T04:56:00.740 回答
6

最好的方法是为不同的应用程序层开发自己的异常,并将其与内部异常一起抛出。它将在应用程序的下一层处理。如果您认为,您可以在 catch 块中获得一个新的异常,只需重新抛出此异常而不进行处理。

假设您有两层:业务逻辑层 (BLL) 和数据访问层 (DAL),并且在 DAL 的 catch 块中您有一个异常。

达尔:

try
{
}
catch(Excepetion ex)
{
  // if you don't know how should you handle this exception 
  // you should throw your own exception and include ex like inner exception.
   throw new MyDALException(ex);
}

BLL:

try
{
  // trying to use DAL
}
catch(MyDALException ex)
{
  // handling
}
catch(Exception ex)
{
   throw new MyBLLException(ex);
}
于 2012-11-28T06:47:43.677 回答
5
try
{
    // Some code here
}
catch (Exception ex)
{
    try
    {
        // Some more code
    }
    catch (Exception ex)
    {
    }
}
于 2012-11-28T04:53:57.903 回答
2

双重故障经常发生在精心设计的 3g 编程语言中。由于保护模式和 286,硬件语言的一般设计是在三重故障时重置芯片。

您可能可以设计出摆脱双重错误的方式。在这种情况下,不要因为不得不做一些事情来停止处理/向用户报告错误而感到难过。如果您遇到一种情况,例如,您捕获 IO 异常(读取/写入数据)然后尝试关闭您正在读取的流,并且这也失败了,这不是一个糟糕的模式,即显着失败并发出警告用户认为真正异常的事情发生了。

于 2012-11-28T05:06:58.620 回答
2

对于可能在块中引发异常的代码行,请catch制作额外的显式 try..ctach 块。除了考虑有finally块之外,一定要有线路在那里运行。同样的问题可能会针对该finally块提出。因此,如果您的代码可能会在finally块中引发一些异常,您还可以在此处添加 try..catch。

try
{
}
catch (Exception ex)
{
    try
    {
        // code that is supposed to throw an exception
    }
    catch (Exception ex1)
    {
    }
    // code that is not supposed to throw an exception       
}
finally
{
    try
    {
        // code that is supposed to throw an exception
    }
    catch (Exception ex1)
    {
    }
    // code that is not supposed to throw an exception       
}
于 2012-11-28T04:54:50.337 回答
1

catch 块在任何特定方面都没有什么特别之处。您将不得不使用另一个 try/catch 块或不处理错误。

于 2012-11-28T04:53:37.180 回答
0

我的朋友 Atul.. 如果你在 catch 块中写 try..catch,如果内部 try..catch 再次发生异常,同样的问题会再次出现。因此,解决此问题,您可以在 Global.asax 中处理应用程序级事件中的这些错误

检查下面的链接..

http://msdn.microsoft.com/en-us/library/24395wz3%28v=vs.100%29.aspx

http://msdn.microsoft.com/en-us/library/fwzzh56s%28v=vs.80%29.aspx

让我知道这是否适合你.. :)

于 2012-11-28T05:52:27.597 回答