//我在Catch Block中写了代码
try {
} catch(Excepetion ex) {
// I have written code here If Exception Occurs then how to handle it.
}
您可以在 catch 块中放置一个 try catch,或者您可以简单地再次抛出异常。最好在 try catch 中使用finally块,这样即使在 catch 块中发生异常,finally 块代码也会被执行。
try
{
}
catch(Excepetion ex)
{
try
{
}
catch
{
}
//or simply throw;
}
finally
{
// some other mandatory task
}
finally 块在某些异常中可能不会被执行。您可能会看到约束执行区域以获得更可靠的机制。
最好的方法是为不同的应用程序层开发自己的异常,并将其与内部异常一起抛出。它将在应用程序的下一层处理。如果您认为,您可以在 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);
}
try
{
// Some code here
}
catch (Exception ex)
{
try
{
// Some more code
}
catch (Exception ex)
{
}
}
双重故障经常发生在精心设计的 3g 编程语言中。由于保护模式和 286,硬件语言的一般设计是在三重故障时重置芯片。
您可能可以设计出摆脱双重错误的方式。在这种情况下,不要因为不得不做一些事情来停止处理/向用户报告错误而感到难过。如果您遇到一种情况,例如,您捕获 IO 异常(读取/写入数据)然后尝试关闭您正在读取的流,并且这也失败了,这不是一个糟糕的模式,即显着失败并发出警告用户认为真正异常的事情发生了。
对于可能在块中引发异常的代码行,请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
}
catch 块在任何特定方面都没有什么特别之处。您将不得不使用另一个 try/catch 块或不处理错误。
我的朋友 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
让我知道这是否适合你.. :)