【笔记】《C#大学教程》- 第11章 异常处理

来源:互联网 发布:淘宝发布宝贝不同价格 编辑:程序博客网 时间:2024/06/07 10:31

1.异常流程:

(1).通过try块执行一个任务;

(2).通过catch异常类型来处理异常, 如果异常不进行处理那么方法中之后的程序将不会执行;

(3).如果有finally块那么无论异常有没有catch都会在异常处理后或者方法终止前执行finally块中的内容;

(4).如果异常被处理那么就会执行try块后的语句。


2.抛出异常:

throw new Exception("xxxxx");


3.Exception类:

(1).Message属性:错误消息。

(2).StackTrace:导致异常发生的方法调用堆栈。

(3).InnerException:表示自定义异常时原来使用的是哪种异常。

namespace ConsoleApplication4{    class Program    {        static void Main(string[] args)        {            try            {                Method1();            }            catch (Exception exception)            {                Console.WriteLine(                    "exception.toString():\n{0}\n",                    exception.ToString());                Console.WriteLine(                    "exception.Message:\n{0}\n",                    exception.Message);                Console.WriteLine(                    "exception.StackTrace:\n{0}\n",                    exception.StackTrace);                Console.WriteLine(                    "exception.InnerException:\n{0}",                    exception.InnerException);            }        }        public static void Method1()        {            Method2();        }        public static void Method2()        {            Method3();        }        public static void Method3()        {            try            {                Convert.ToInt32("Not an integer");            }            catch (FormatException error)            {                throw new Exception(                    "Exception occurred in Method3", error);            }        }    }}

exception.toString():System.Exception: Exception occurred in Method3 ---> System.FormatException: 输入字符串的格式不正确。   在 System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)   在 System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info)   在 System.Convert.ToInt32(String value)   在 ConsoleApplication4.Program.Method3() 位置 G:\CProjects\ConsoleApplication4\ConsoleApplication4\Program.cs:行号 51   --- 内部异常堆栈跟踪的结尾 ---   在 ConsoleApplication4.Program.Method3() 位置 G:\CProjects\ConsoleApplication4\ConsoleApplication4\Program.cs:行号 56   在 ConsoleApplication4.Program.Method2() 位置 G:\CProjects\ConsoleApplication4\ConsoleApplication4\Program.cs:行号 44   在 ConsoleApplication4.Program.Method1() 位置 G:\CProjects\ConsoleApplication4\ConsoleApplication4\Program.cs:行号 39   在 ConsoleApplication4.Program.Main(String[] args) 位置 G:\CProjects\ConsoleApplication4\ConsoleApplication4\Program.cs:行号 14exception.Message:Exception occurred in Method3exception.StackTrace:   在 ConsoleApplication4.Program.Method3() 位置 G:\CProjects\ConsoleApplication4\ConsoleApplication4\Program.cs:行号 56   在 ConsoleApplication4.Program.Method2() 位置 G:\CProjects\ConsoleApplication4\ConsoleApplication4\Program.cs:行号 44   在 ConsoleApplication4.Program.Method1() 位置 G:\CProjects\ConsoleApplication4\ConsoleApplication4\Program.cs:行号 39   在 ConsoleApplication4.Program.Main(String[] args) 位置 G:\CProjects\ConsoleApplication4\ConsoleApplication4\Program.cs:行号 14exception.InnerException:System.FormatException: 输入字符串的格式不正确。   在 System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)   在 System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info)   在 System.Convert.ToInt32(String value)   在 ConsoleApplication4.Program.Method3() 位置 G:\CProjects\ConsoleApplication4\ConsoleApplication4\Program.cs:行号 51请按任意键继续. . .

4.自定义异常类:

class ExpandException:ApplicationException{    public ExpandException():base ("any explanation")    {    }    public ExpandException(string message):base(message)    {    }    public ExpandException(string message, Exception inner):base(message, inner)    {    }}

5.使用checked和unchecked表明是否检查数据溢出或者不检查直接截短:

try{    sum = checked(num1 + num2);}


0 0
原创粉丝点击