⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 23.3.htm

📁 This ECMA Standard specifies the form and establishes the interpretation of programs written in the
💻 HTM
字号:
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>Hyperlinked ECMA C# Language Specification</title><meta name="author" content="Jon Jagger" /><link rel="stylesheet" href="ecma334.css"></link></head><body><div align="right"><em><a href="http://www.jaggersoft.com">Jon Jagger</a></em></div><div align="right"><a href="mailto:jon@jaggersoft.com">jon@jaggersoft.com</a></div><form method="get" action="http://search.atomz.com/search/"><input size="30" name="sp-q"></input><input type="submit" value="Search C# Spec"></input><input type="hidden" name="sp-a" value="sp10024177"></input><input type="hidden" name="sp-f" value="ISO-8859-1"></input></form><a href="toc.htm">Table of Contents</a> <a href="1.htm">1</a> <a href="2.htm">2</a> <a href="3.htm">3</a> <a href="4.htm">4</a> <a href="5.htm">5</a> <a href="6.htm">6</a> <a href="7.htm">7</a> <a href="8.htm">8</a> <a href="9.htm">9</a> <a href="10.htm">10</a> <a href="11.htm">11</a> <a href="12.htm">12</a> <a href="13.htm">13</a> <a href="14.htm">14</a> <a href="15.htm">15</a> <a href="16.htm">16</a> <a href="17.htm">17</a> <a href="18.htm">18</a> <a href="19.htm">19</a> <a href="20.htm">20</a> <a href="21.htm">21</a> <a href="22.htm">22</a> <a href="23.htm">23</a> <a href="24.htm">24</a> <a href="25.htm">25</a> <a href="notes.htm">Notes</a> <a href="HyperlinkedCSharpECMA.zip">Download</a><span class="ruler"></span><span class="heading">ECMA-334 C# Language Specification</span><span class="navigate"><a href="23.2.htm"><img src="previous.gif" alt="previous" border="0" /></a><a href="23.4.htm"><img src="next.gif" alt="next" border="0" /></a></span><span class="clause-depth"><a href="22.htm"><img src="previous.gif" alt="previous at this level" border="0" /></a><a href="24.htm"><img src="next.gif" alt="next at this level" border="0" /></a> <span class="clause-number-link"><a href="23.htm">23</a></span><span class="clause-title-previous"> Exceptions</span></span><span class="clause-depth"><a href="23.2.htm"><img src="previous.gif" alt="previous at this level" border="0" /></a><a href="23.4.htm"><img src="next.gif" alt="next at this level" border="0" /></a> <span class="clause-number">23.3</span><span class="clause-title"> How exceptions are handled</span></span><span class="locator">
     Paragraph 1</span><span class="paragraph"><span class="sentence"><span class="sentence-number">1</span> <a name="P1S1"></a>Exceptions are handled by a try statement (<a href="15.10.htm">&#167;15.10</a>).</span> </span><span class="locator">
     Paragraph 2</span><span class="paragraph"><span class="sentence"><span class="sentence-number">1</span> <a name="P2S1"></a>When an exception occurs, the system searches for the nearest catch clause that can handle the exception, as determined by the run-time type of the exception.</span> <span class="sentence"><span class="sentence-number">2</span> <a name="P2S2"></a>First, the current method is searched for a lexically enclosing try statement, and the associated catch clauses of the try statement are considered in order.</span> <span class="sentence"><span class="sentence-number">3</span> <a name="P2S3"></a>If that fails, the method that called the current method is searched for a lexically enclosing try statement that encloses the point of the call to the current method.</span> <span class="sentence"><span class="sentence-number">4</span> <a name="P2S4"></a>This search continues until a catch clause is found that can handle the current exception, by naming an exception class that is of the same class, or a base class, of the run-time type of the exception being thrown.</span> <span class="sentence"><span class="sentence-number">5</span> <a name="P2S5"></a>A catch clause that doesn't name an exception class can handle any exception.</span> </span><span class="locator">
     Paragraph 3</span><span class="paragraph"><span class="sentence"><span class="sentence-number">1</span> <a name="P3S1"></a>Once a matching catch clause is found, the system prepares to transfer control to the first statement of the catch clause.</span> <span class="sentence"><span class="sentence-number">2</span> <a name="P3S2"></a>Before execution of the catch clause begins, the system first executes, in order any finally clauses that were associated with try statements more nested that than the one that caught the exception.</span> </span><span class="locator">
     Paragraph 4</span><span class="paragraph"><span class="sentence"><span class="sentence-number">1</span> <a name="P4S1"></a>If no matching catch clause is found, one of two things occurs: </span><ul><li><span class="sentence"><span class="sentence-number">2</span> <a name="P4S2"></a> If the search for a matching catch clause reaches a static constructor (<a href="17.11.htm">&#167;17.11</a>) or static field initializer, then a System.TypeInitializationException is thrown at the point that triggered the invocation of the static constructor.</span> <span class="sentence"><span class="sentence-number">3</span> <a name="P4S3"></a>The inner exception of the System.TypeInitializationException contains the exception that was originally thrown.</span> </li><li><span class="sentence"><span class="sentence-number">4</span> <a name="P4S4"></a> If the search for matching catch clauses reaches the code that initially started the thread, then execution of the thread is terminated.</span> <span class="sentence"><span class="sentence-number">5</span> <a name="P4S5"></a>The impact of such termination is implementation-defined.</span> </li></ul></span><span class="locator">
     Paragraph 5</span><span class="paragraph"><span class="sentence"><span class="sentence-number">1</span> <a name="P5S1"></a>Exceptions that occur during destructor execution are worth special mention.</span> <span class="sentence"><span class="sentence-number">2</span> <a name="P5S2"></a>If an exception occurs during destructor execution, and that exception is not caught, then the execution of that destructor is terminated and the destructor of the base class (if any) is called.</span> <span class="sentence"><span class="sentence-number">3</span> <a name="P5S3"></a>If there is no base class (as in the case of the object type) or if there is no base class destructor, then the exception is discarded.</span> </span><span class="ruler"></span><table><tr><td><table align="left" bgcolor="navy"><tr bgcolor="navy"><td><font face="Arial,sans-serif" size="6" color="yellow"><strong>{ JSL }</strong></font></td></tr></table></td></tr><tr><td><font face="Arial,sans-serif" size="2" color="navy"><strong>Jagger Software Ltd</strong></font></td></tr><tr><td><font face="Arial,sans-serif" size="2" color="navy"><strong>Company # 4070126</strong></font></td></tr><tr><td><font face="Arial,sans-serif" size="2" color="navy"><strong>VAT # 762 5213 42</strong></font></td></tr></table><img src="valid-html401.png" align="left" height="31" width="88" alt="Valid HTML 4.01" /><img src="vcss.gif" align="left" height="31" width="88" alt="Valid CSS" /></body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -