• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            C++ Programmer's Cookbook

            {C++ 基礎} {C++ 高級} {C#界面,C++核心算法} {設計模式} {C#基礎}

            Exception Handling in C#

             Exception Handling in C#

            In this article, you will learn about the usage of various exception handling statements in C# with the help of relevant listings.

            Trapping and handling of runtime errors is one of the most crucial tasks ahead of any programmer. But, before discussing runtime errors, let's look at compile time errors, which are errors that occur during compilation time. They may be due to bad coding, misspelling of syntaxes, and so on. They can be corrected by studying the error messages and warnings the compiler produces.

            On the other hand, runtime errors occur at the time the program executes and can't be corrected. A programmer can, however, take preventive measures while coding the program. To do so, a programmer should first identify these two aspects:

            • Find out the part or parts of a program that are most likely to emit runtime errors.
            • Handle those errors according to language conventions.

            C# provides an elegant way to handle runtime errors with the help of the try, catch, and finally keywords. Before moving ahead, let's consider a situation where the exception is not handled. We will explain the concept with the help of a "Division by Zero" example. Listing 1 illustrates how to write a simple program without handling an exception:

            Listing 1

            class  Without
            {
              public static void Main()
              {
                int x = 5;
                int y = 0;
                int z = x/y;
                Console.WriteLine(z);
              }
            }
            

            When you execute this program, the C# interpreter produces a series of error messages (see Figure 1) to notify you that a runtime error has occurred.



            Click here for a larger image.

            Figure 1—Exception Occurred

            To avoid these error messages and provide the user with a user-friendly error message, you should enclose the error-prone areas in Listing 1 with the try-catch clause, as shown in Listing 2:

            Listing 2

            class  With
            {
              public static void Main()
              {
                try
                {
                  int x = 5;
                  int y = 0;
                  int z = x/y;
                  Console.WriteLine(z);
                }
                catch(DivideByZeroException e)
                {
                  Console.WriteLine("Error occurred, unable to compute");
                }
              }
            }
            

            When you execute the program in Listing 2, instead of error messages as in Figure 1, the statement inside the catch block (see Figure 2) would be printed as our output.



            Click here for a larger image.

            Figure 2—Exception Handled Successfully

            DivideByZeroException is one of the built-in exceptions in C#, defined in the System namespace. There are lots of other exceptions, which we will discuss shortly. The base class of all Exception classes in the .NET Framework is System.Exception. Even though the System namespace defines lot of exceptions, some of them are specified in specialized namespaces such as System.Data, System.IO, and so forth. Table 1 describes some of the built-in exceptions defined in the System namespace.

            Name Description of Probable Causes
            ArithmeticException Data Type not matched, invalid casting, etc.
            DivideByZeroException An attempt to divide a value by zero
            FormatException Incorrect arguments for the methods
            MissingMethodException An attempt to call an invalid method
            OutOfMemoryException Not enough memory to complete an operation
            OverflowException An attempt to give large values to a variable of some type

            Table 1—Built-in Exceptions

            In Listing 2, we have analyzed DivideByZeroException and the way to handle the same. There are many more examples, which you may try on your own.

            Using the finally Clause

            In the preceding listings, the statements inside the catch block would be executed only if an error occurs. If you substitute the value of y with 1 and execute, there will not be an exception. However, there may be some cases where you want something to be printed, whether the exception had occurred or not. You can do so by using the finally clause. Listing 3 illustrates this concept by revisiting Listing 2:

            Listing 3

            class  Withfinally
            {
              public static void Main()
              {
                try
                {
                  int x = 5;
                  int y = 0;
                  int z = x/y;
                  Console.WriteLine(z);
                }
                catch(DivideByZeroException e)
                {
                  Console.WriteLine("Error occurred, unable to compute");
                }
                finally
                {
                  Console.WriteLine("Thank you for using the program");
                }
              }
            }
            

            In the Listing 3 code, the statement inside the finally block will always print as shown in Figure 3.



            Click here for a larger image.

            Figure 3—Using the finally Clause

            Using the Message Property

            In certain cases, you may have to print the built-in C# error messages when a runtime error occurs. The System.Exception namespace defines predefined error messages for every exception. To use them, you have to use the Message property found in the System.Exception namespace. Listing 4 illustrates the working of this property.

            Listing 4

            class WithMessage
            {
              public static void Main()
              {
                try
                {
                  int x = 5;
                  int y = 0;
                  int z = x/y;
                  Console.WriteLine(z);
                }
                catch(DivideByZeroException e)
                {
                  Console.WriteLine("Error occurred " +e.Message);
                }
              }
            }
            -------------------------------------------------------------------

            About the Author

            Anand Narayanaswamy works as a freelance Web/Software developer and technical writer. He runs and maintains learnxpress.com, and provides free technical support to users. His areas of interest include Web development, Software development using Visual Basic, and in the design and preparation of courseware, technical articles, and tutorials.

            posted on 2005-11-18 12:03 夢在天涯 閱讀(730) 評論(0)  編輯 收藏 引用 所屬分類: C#/.NET

            公告

            EMail:itech001#126.com

            導航

            統計

            • 隨筆 - 461
            • 文章 - 4
            • 評論 - 746
            • 引用 - 0

            常用鏈接

            隨筆分類

            隨筆檔案

            收藏夾

            Blogs

            c#(csharp)

            C++(cpp)

            Enlish

            Forums(bbs)

            My self

            Often go

            Useful Webs

            Xml/Uml/html

            搜索

            •  

            積分與排名

            • 積分 - 1808325
            • 排名 - 5

            最新評論

            閱讀排行榜

            国产精品久久久久久福利69堂| 久久精品这里只有精99品| 伊人久久无码精品中文字幕| 亚洲国产成人久久一区久久 | 国产亚洲美女精品久久久久狼| 久久久久亚洲AV无码专区体验| 久久这里只精品国产99热| 狠狠久久综合| 亚洲级αV无码毛片久久精品| 成人资源影音先锋久久资源网| 久久91这里精品国产2020| 精品久久久久久国产| 国产精品热久久毛片| 无码伊人66久久大杳蕉网站谷歌| 一本色道久久88加勒比—综合| 欧美日韩精品久久久久| 亚洲国产精品久久久久婷婷软件| 婷婷久久综合九色综合绿巨人 | 久久婷婷五月综合色高清 | 国产69精品久久久久久人妻精品| 久久91精品国产91久久户| 久久夜色精品国产噜噜亚洲a| 日韩精品久久久久久| 中文国产成人精品久久不卡| 久久精品国产黑森林| 久久天堂电影网| 精品久久8x国产免费观看| 精品熟女少妇AV免费久久 | 久久精品国产第一区二区| 国产精品一区二区久久国产| 久久精品国产亚洲AV蜜臀色欲 | 欧美一区二区三区久久综合| 无码乱码观看精品久久| 国产精品美女久久久网AV| 国产成人久久精品区一区二区| 影音先锋女人AV鲁色资源网久久| 香蕉久久夜色精品国产2020| 三级片免费观看久久| 免费一级做a爰片久久毛片潮| 国产免费久久久久久无码| 国产2021久久精品|