如果Catch块本身发生exception,那么如何在C#中处理它?

//我在Catch Block中使用了wriiten代码

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

你可以在catch块中放置一个try catch,或者你可以再次抛出exception。 最好最后使用try catch 阻塞 ,这样即使catch块中发生exception,最终也会执行块代码。

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

最后, 在某些例外情况下,块可能无法执行 。 您可能会看到约束执行区域以获得更可靠的机制。

 try { // Some code here } catch (Exception ex) { try { // Some more code } catch (Exception ex) { } } 

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

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

DAL:

 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); } 

对于可能在catch块中抛出exception的代码行,可以创建额外的try..ctach块。 除了考虑finally阻止,还有线路在那里运行。 对于finally块,可能会出现同样的问题。 因此,如果您的代码可能在finally块中抛出一些exception,您还可以在那里添加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开始,硬件语言的一般设计是在三重故障上复位芯片。

您可能正好设计出双重故障的方法。 在这种情况下,不要为了停止处理/向用户报告错误而感到害怕。 如果你碰到一个例子,你捕获IOexception(读/写数据),然后尝试关闭你正在读取的流,并且也失败了,它不是一个糟糕的模式,会大大失败并发出警告一个真正特殊的事情发生的用户。

捕获块在任何特定方面都不是特殊的。 您将不得不使用另一个try / catch块或不处理错误。

我的朋友Atul ..如果你在catch块中写try..catch,如果在内部try..catch中再次发生exception,同样的问题将再次引发。 因此,解决此问题,您可以在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

让我知道这是否适合你.. 🙂