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

📄 《_net编程先锋c#》第七章 异常处理_c#语言_网络教程.htm

📁 最近在研究c#
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0060)http://www.qostudy.org/pr/Article/aspnet/c/200605/16913.html -->
<HTML><HEAD><TITLE>《.net编程先锋C#》第七章 异常处理_C#语言_网络教程</TITLE>
<META http-equiv=Content-Language content=zh-cn>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META content="《.net编程先锋C#》第七章 异常处理" name=keywords>
<META content="《.net编程先锋C#》第七章 异常处理" name=description><LINK 
href="《_net编程先锋C#》第七章 异常处理_C#语言_网络教程.files/Skin1.css" type=text/css 
rel=stylesheet>
<META content="MSHTML 6.00.2900.2963" name=GENERATOR></HEAD>
<BODY leftMargin=0 topMargin=0>
<TABLE class=maintabale style="BORDER-COLLAPSE: collapse" height=383 
cellPadding=0 width=760 border=0>
  <TBODY>
  <TR>
    <TD height=108>
      <DIV align=center>
      <TABLE style="BORDER-COLLAPSE: collapse" height=99 cellSpacing=0 
      cellPadding=2 width="98%">
        <TBODY>
        <TR>
          <TD width=202><A title=网络教程 href="http://www.qostudy.org/pr/" 
            target=_blank><IMG height=86 
            src="《_net编程先锋C#》第七章 异常处理_C#语言_网络教程.files/logo.gif" width=190 
            border=0></A></TD>
          <TD>
            <DIV class=adsense id=ad005>
            <SCRIPT type=text/javascript><!--
google_ad_client = "pub-3118933189526443";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as_rimg";
google_cpa_choice = "CAAQhZOgnAIaCCfXj46FmpPgKJnA93M";
google_ad_channel = "";
//--></SCRIPT>

            <SCRIPT src="《_net编程先锋C#》第七章 异常处理_C#语言_网络教程.files/show_ads.js" 
            type=text/javascript>
</SCRIPT>
            </DIV></TD></TR></TBODY></TABLE></DIV></TD></TR>
  <TR>
    <TD width="95%" height=30>
      <DIV align=center>
      <TABLE style="BORDER-COLLAPSE: collapse" cellPadding=0 width="98%" 
      border=0>
        <TBODY>
        <TR>
          <TD>您的位置:&nbsp;<A class=LinkPath 
            href="http://www.qostudy.org/pr/">网络教程</A>&nbsp;&gt;&gt;&nbsp;<A 
            class=LinkPath 
            href="http://www.qostudy.org/pr/Article/aspnet/Index.html">Windows.NET教程</A>&nbsp;&gt;&gt;&nbsp;<A 
            class=LinkPath 
            href="http://www.qostudy.org/pr/Article/aspnet/c/Index.html">C#语言</A>&nbsp;&gt;&gt;&nbsp;文章正文</TD></TR></TBODY></TABLE></DIV></TD></TR>
  <TR>
    <TD width="95%" height=239>
      <DIV align=center>
      <TABLE style="BORDER-COLLAPSE: collapse" height="98%" cellSpacing=0 
      cellPadding=2 width="98%">
        <TBODY>
        <TR>
          <TD colSpan=3 height=20> </TD></TR>
        <TR>
          <TD colSpan=3 height=44>
            <P align=center> <B><FONT face=宋体 size=3>《.net编程先锋C#》第七章 
            异常处理<BR><BR></FONT></B>作者:佚名&nbsp;&nbsp;&nbsp;&nbsp;文章来源:不详&nbsp;&nbsp;&nbsp;&nbsp;点击数:
            <SCRIPT language=javascript 
            src="《_net编程先锋C#》第七章 异常处理_C#语言_网络教程.files/GetHits.htm"></SCRIPT>
            &nbsp;&nbsp;&nbsp;&nbsp;更新时间:2006-5-8</P></TD></TR>
        <TR>
          <TD colSpan=3 height=28>
            <HR color=#ffffff SIZE=1>
          </TD></TR>
        <TR>
          <TD width=3 rowSpan=3></TD>
          <TD vAlign=top align=justify height=20></TD>
          <TD width=3 rowSpan=3></TD></TR>
        <TR>
          <TD vAlign=top align=justify>
            <TABLE cellSpacing=0 cellPadding=0 align=left border=0>
              <TBODY>
              <TR>
                <TD>
                  <DIV class=adsense id=ad001>
                  <SCRIPT type=text/javascript><!--
google_ad_client = "pub-3118933189526443";
google_ad_width = 336;
google_ad_height = 280;
google_ad_format = "336x280_as";
google_ad_type = "text_image";
google_ad_channel ="";
google_color_border = "A43232";
google_color_bg = "A43232";
google_color_link = "FFFFFF";
google_color_text = "FFFFFF";
google_color_url = "FFFFFF";
//--></SCRIPT>

                  <SCRIPT src="《_net编程先锋C#》第七章 异常处理_C#语言_网络教程.files/show_ads.js" 
                  type=text/javascript>
</SCRIPT>
                  </DIV>
                  <DIV class=adsense id=ad002 
                  style="LEFT: 770px; WIDTH: 160px; POSITION: absolute; TOP: 0px; HEIGHT: 600px">
                  <SCRIPT type=text/javascript><!--
google_ad_client = "pub-3118933189526443";
google_ad_width = 160;
google_ad_height = 600;
google_ad_format = "160x600_as";
google_ad_type = "text_image";
google_ad_channel ="";
google_color_border = "A43232";
google_color_bg = "A43232";
google_color_link = "FFFFFF";
google_color_url = "FFFFFF";
google_color_text = "FFFFFF";
//--></SCRIPT>

                  <SCRIPT src="《_net编程先锋C#》第七章 异常处理_C#语言_网络教程.files/show_ads.js" 
                  type=text/javascript>
</SCRIPT>
                  </DIV></TD></TR></TBODY></TABLE>第七章 
            异常处理<BR>通用语言运行时(CLR)具有的一个很大的优势为,异常处理是跨语言被标准化的。一个在C#中所引发的异常可以在Visual 
            Basic客户中得到处理。不再有 HRESULTs 或者 ISupportErrorInfo 
            接口。<BR>尽管跨语言异常处理的覆盖面很广,但这一章完全集中讨论C#异常处理。你稍为改变编译器的溢出处理行为,接着有趣的事情就开始了:你处理了该异常。要增加更多的手段,随后引发你所创建的异常。&lt;/P&gt;&lt;P&gt;7.1 
            校验(checked)和非校验(unchecked)语句<BR>当你执行运算时,有可能会发生计算结果超出结果变量数据类型的有效范围。这种情况被称为溢出,依据不同的编程语言,你将被以某种方式通知——或者根本就没有被通知。(C++程序员听起来熟悉吗?)<BR>那么,C#如何处理溢出的呢? 
            要找出其默认行为,请看我在这本书前面提到的阶乘的例子。(为了方便其见,前面的例子再次在清单 7.1 
            中给出)&lt;/P&gt;&lt;P&gt;清单 7.1 计算一个数的阶乘&lt;/P&gt;&lt;P&gt;1: using 
            System;<BR>2: <BR>3: class Factorial<BR>4: {<BR>5: public static 
            void Main(string[] args)<BR>6: {<BR>7: long nFactorial = 1;<BR>8: 
            long nComputeTo = Int64.Parse(args[0]);<BR>9: <BR>10: long nCurDig = 
            1;<BR>11: for (nCurDig=1;nCurDig &lt;= nComputeTo; nCurDig++)<BR>12: 
            nFactorial *= nCurDig;<BR>13: <BR>14: Console.WriteLine("{0}! is 
            {1}",nComputeTo, nFactorial);<BR>15: }<BR>16: 
            }&lt;/P&gt;&lt;P&gt;当你象这样使用命令行执行程序时<BR>factorial 
            2000&lt;/P&gt;&lt;P&gt;结果为0,什么也没有发生。因此,设想C#默默地处理溢出情况而不明确地警告你是安全的。<BR>通过给整个应用程序(经编译器开关)或于语句级允许溢出校验,你就可以改变这种行为。以下两节分别解决一种方案。<BR>7.1.1 
            给溢出校验设置编译器<BR>如果你想给整个应用程序控制溢出校验,C#编译器设置选择是正是你所要找的。默认地,溢出校验是禁用的。要明确地要求它,运行以下编译器命令:<BR>csc 
            factorial.cs 
            /checked+&lt;/P&gt;&lt;P&gt;现在当你用2000参数执行应用程序时,CLR通知你溢出异常(见图 
            7.1)。&lt;/P&gt;&lt;P&gt;图 
            7.1 允许了溢出异常,阶乘代码产生了一个异常。&lt;/P&gt;&lt;P&gt;  按OK键离开对话框揭示了异常信息:<BR>Exception 
            occurred: System.OverflowException<BR>at 
            Factorial.Main(System.String[])&lt;/P&gt;&lt;P&gt;  现在你了解了溢出条件引发了一个 
            System.OverflowException异常。下一节,在我们完成语法校验之后,如何捕获并处理所出现的异常?<BR>7.1.2 语法溢出校验<BR>  如果你不想给整个应用程序允许溢出校验,仅给某些代码段允许校验,你可能会很舒适。对于这种场合,你可能象清单7.2中显示的那样,使用校验语句。&lt;/P&gt;&lt;P&gt;清单 
            7.2  阶乘计算中的溢出校验&lt;/P&gt;&lt;P&gt;1: using System;<BR>2: <BR>3: 
            class Factorial<BR>4: {<BR>5: public static void Main(string[] 
            args)<BR>6: {<BR>7: long nFactorial = 1;<BR>8: long nComputeTo = 
            Int64.Parse(args[0]);<BR>9: <BR>10: long nCurDig = 1;<BR>11: <BR>12: 
            for (nCurDig=1;nCurDig &lt;= nComputeTo; nCurDig++)<BR>13: checked { 
            nFactorial *= nCurDig; }<BR>14: <BR>15: Console.WriteLine("{0}! is 
            {1}",nComputeTo, nFactorial);<BR>16: }<BR>17: 
            }&lt;/P&gt;&lt;P&gt;  甚至就如你运用标志 
            checked-编译了该代码,在第13行中,溢出校验仍然会对乘法实现检查。错误信息保持一致。&lt;/P&gt;&lt;P&gt;  显示相反行为的语句是非校验(unchecked 
            )。甚至如果允许了溢出校验(给编译器加上checked+标志),被unchecked 
            语句所括住的代码也将不会引发溢出异常:&lt;/P&gt;&lt;P&gt;unchecked<BR>{<BR>nFactorial 
            *= nCurDig;<BR>}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;7.2 
             异常处理语句<BR>  既然你知道了如何产生一个异常(你会发现更多的方法,相信我),仍然存在如何处理它的问题。如果你是一个 C++ 
            WIN32 
            程序员,肯定熟悉SEH(结构异常处理)。你将从中找到安慰,C#中的命令几乎是相同的,而且它们也以相似的方式运作。&lt;/P&gt;&lt;P&gt;The 
            following three sections introduce C#'s exception-handling 
            statements:<BR>以下三节介绍了C#的异常处理语句:&lt;/P&gt;&lt;P&gt;。用 try-catch 
            捕获异常<BR>。用try-finally 清除异常<BR>。用try-catch-finally 
            处理所有的异常&lt;/P&gt;&lt;P&gt;7.2.1  使用 try 和 
            catch捕获异常<BR>  你肯定会对一件事非常感兴趣——不要提示给用户那令人讨厌的异常消息,以便你的应用程序继续执行。要这样,你必须捕获(处理)该异常。<BR>这样使用的语句是try 

⌨️ 快捷键说明

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