[英]If exception occurs in Catch block itself then how to handle it in C#?
//我已经在Catch Block中编写了代码
try {
} catch(Excepetion ex) {
// I have written code here If Exception Occurs then how to handle it.
}
最好的方法是为不同的应用层开发自己的异常并与内部异常一起抛出。 它将在应用程序的下一层处理。 如果您认为可以在 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);
}
布莱尔:
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)
{
}
}
对于可能在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
}
双重故障经常发生在设计良好的 3g 编程语言中。 由于保护模式和286,硬件语言的一般设计是在三重故障时复位芯片。
您可能可以设计出摆脱双重错误的方式。 在这种情况下,不要因为不得不做一些事情来停止处理/向用户报告错误而感到难过。 如果您遇到这样的情况,例如,您捕获 IO 异常(读取/写入数据),然后尝试关闭您正在读取的流,但也失败了,这不是一个糟糕的模式,它会显着失败并发出警告用户认为发生了真正异常的事情。
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
让我知道这是否适合您.. :)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.