首页 > 代码库 > 异常处理try-catch

异常处理try-catch

今天来解决异常

1. 错误: 错误指的是我们写的源代码不符合C#的语法规范.
 对于这种错误我们的Visual Studio绝大多数情况下 会以红色的波浪线提示.
 后果: 就是源代码无法编译为 程序集 不能运行.
 如何解决? 那就将源代码改为符合C#的语法规范就可以了.

 有一些错误,VS不会提示的那么及时.甚至是不会提示的.
 那如果我想知道我的源代码有没有语法错误. 可以按下F6 强制的让VS使用编译器来编译我们的源代码.
 而编译器在编译的时候 会检查语法.

 异常: 源代码是没有错误的.可以生成程序集并运行.
 在程序运行的时候,当程序处于某种特定的情况下 程序的运行就会出错. 这种情况我们就称之为异常.
 不是说一定会发生异常,只有在程序处于某种特停情况下的时候 才会发生异常,

 程序如果发生了异常:
 那么程序会崩溃. 停止运行.并关闭程序,后面的代码不会运行.

 2. 如何处理程序的异常.
 a. 为什么要处理:
 如果不处理的话,当程序发生异常的时候 程序就会崩溃.
处理的目的: 当程序发生异常的时候 程序不会崩溃 并且继续往下运行.

 b. 如何处理.
 1). 能够使用代码逻辑来处理 进来使用逻辑代码来处理.
 使用if结构来判断.

 2). 对于不方便使用if来判断的,我们使用try-catch来处理异常.

3. 使用try-catch来处理异常.
 a. 语法.
 使用try 将有可能发生异常的代码 围起来.
 在try后面 紧跟1个catch块.

 b. 如果try中的代码在执行的时候发生了异常.
 就会立即跳到catch块中执行代码.如果try后面还有代码,是不会执行的 执行完毕以后 继续往下执行.
 如果try中的代码在执行的时候没有发生异常 就跳过catch块中的代码往下执行.

 c. 一般情况下,我们使用try将有可能会发生异常的代码围起来. 所以你必须要知道那1段代码在运行的时候可能会发生异常.
 在try里面 我们做异常处理.

 //如果用户输入的不是整数,要求重新输入 直道是1个整数为止.             while (true)            {                Console.WriteLine("请输入你的年龄");                try                {                    int age = int.Parse(Console.ReadLine());                    break;                }                catch                {                    Console.WriteLine("请输入1个整数:");                    continue;                }            }

 



 4. 如何在catch中知道发生异常的信息.
 在catch的后面加1个小括弧 在小括弧中声明1个Exception类型的变量.

 当try中的代码发生异常的时候. 就会将发生异常的详细信息 赋值给 catch后面的Exception类型的变量.
 ex.Message 取出发生异常的原因.

 5. 在catch后面还可以跟1个finally块.
无论有没有发生异常,finally中的代码都会被执行.

             try            {                Console.WriteLine("请输入第1个数:");                int numA = int.Parse(Console.ReadLine());                Console.WriteLine("请输入第2个数:");               int numB = int.Parse(Console.ReadLine());               int res = numA / numB;                Console.WriteLine(res);            }            catch (Exception ex)            {                Console.WriteLine(ex.Message);                //知道发生异常的详细信息.             }            finally            {                Console.WriteLine("我是finally块...");            }            Console.WriteLine("没有崩溃啊...");