异常与异常处理
传统的错误表示方式:错误码。举例。需要知道不同错误码的含义,如果不处理错误码,则程序可能陷入不可以预置的错误。陈摄影师以为文件已经被删除造成的麻烦。
错误码的缺点:不处理则很难发现,每次处理则很麻烦;
难以看出错误的原因;容易使得程序进入不确定状态。
try catch。Exception ex 异常也是对象。
Exception 类主要属性:Message、StackTrace
发生异常后程序默认就退出了,try代码块中的后续代码不会被执行。catch以后的代码则会继续执行。
不要吃掉异常,一般情况下不需要处理异常。
扔出自己的异常,扔:throw,抓住:catch
static void Main(string[] args) { try//将可能发生异常的 语句放到这里面 { Console.WriteLine("请输入一个数字:");//提示输出 int i = Convert.ToInt32(Console.ReadLine());//接收用户输入的字符串 Console.WriteLine("你输入的i为:{0}", i);//输出i的值 } catch(Exception ex)//输出异常的结果 { Console.WriteLine("数据错误!"+ex.Message+"异常堆栈:"+ex.StackTrace);//提示错误信息。 } Console.ReadKey();//按任意键退出。 }
输出结果:
class Program { static void Main(string[] args) { try//将可能发生异常的 语句放到这里面 { Console.WriteLine("请输入一个数字:");//提示输出 int i = Convert.ToInt32(Console.ReadLine());//接收用户输入的字符串 SS(i);//调用SS函数。 } catch(Exception ex)//输出异常的结果 catch就是将错误信息抓回来。 { Console.WriteLine("数据错误:" + ex.Message);//可以输出创建的 错误信息。 } Console.ReadKey();//按任意键退出。 } static string SS(int s) { if (s > 0 && s < 2) { return "幼儿"; } else if (s > 1 && s < 18) { return "少年"; } else if (s > 18 && s < 100) { return "成年人"; } else if (s > 100) { throw new Exception("老寿星"); } else if (s < 0) { throw new Exception("还没出世");//创建一个错误 输出的信息 throw 就是将错误信息扔出去,catch就是将错误信息抓回来。 } else { throw new Exception("未知情况");//创建一个错误 返回的信息 } } }
输出结果: