C#中的异常是什么及如何使用?

2025-11-20 14:02:06

1、首先从字面意思理解一下,异常就是跟平常状态不一样.程序运行时发生了和正常状态不一样的情况,有人叫Bug!

比如我们做了一个计算器,用户输入一个5除以0.  (5/0)

我们小学都学过,除数不能为0,这是错误的.

但如果用户输入5/2,就不会出现错误.

所以,在这种情况下,我们写的这个计算器软件就可能会发生异常.

2、我们严谨一点针对程序员的异常解释.

就是你写一段代码往往需要一些参数和条件才执行这段代码,你预期的参数和条件和实际的参数和条件不吻合.  比如你开发了一个管理系统,你设置的最大金额是100万,但是后来有人输入了1000万,这就是很危险的异常. 和你预期的完全不一样.

3、我们经常看到以下异常,你都可以理解成,这是操作系统底层异常代码处理给你显示出来,当然我们自己也可以抛异常. 和我们接下来C#中的异常处理其实其实完全一样.只不过那个时候,不叫异常,而是通过一个返回值来决定,返回一个数字.

C#中的异常是什么及如何使用?

C#中的异常是什么及如何使用?

4、拿代码说话,打开我们的编程神器 Visual Studio.

新建一个C#控制台程序.

C#中的异常是什么及如何使用?

5、我们写一段这样的代码:

            double 被除数 = 5;

            double 除数 = 0;

            double 商 = 0;

            商 = 被除数 / 除数;

            Console.WriteLine("{0}/{1}={2}", 被除数, 除数, 商);

            Console.ReadKey();

===============================

我用的是visual studio 2013

它给我输出了:5/0=正无穷大.

这是C#内部的异常检测,也是微软公司设计C#的程序员提前给我们写好的异常检测代码,有一段隐藏的代码会检测我们的除数是否为0,如果是0的话,就会弹出这个,当然不同的版本VS可能弹出的也不一样. 因为软件都在升级嘛.

C#中的异常是什么及如何使用?

6、那么我们现在自己来写一段异常检测

写一段以下代码,我们按F5来执行这段代码.

            double 被除数 = 5;

            double 除数 = 0;

            double 商 = 0;

            if (除数 == 0)

            {

                throw new Exception("除数不能为0");

            }

            商 = 被除数 / 除数;

            Console.WriteLine("{0}/{1}={2}", 被除数, 除数, 商);

            Console.ReadKey();

===========================================

throw是C#中的关键字,它的意思是抛.

new Exception  创建一个异常对象,并且把异常提示的关键字当成参数写进去.

我们自己检查了一下代码,如果除数为0的话,跳出一个异常,后面的代码就不继续执行了.

C#中的异常是什么及如何使用?

7、按F5执行我们的代码看看.

C#中的异常是什么及如何使用?

8、我们把除数改成2,再按F5,运行程序看看效果.

不错,达到了我们心中预期的效果.

我们可以看到,异常不是每次都弹出,只要除数为0的时候,才会弹出异常.

C#中的异常是什么及如何使用?

9、异常的机制是为了保证程序可以一直正常运行!如果我们没有异常机制.

那么我们来写一行代码:

Convert.ToInt32("123");

这一行代码的内部是对我输入的123进行展开.

怎么样展开呢?  

1*100+2*10+3.

当然,这是微软的程序员给我们封装好的.

但是我们来思考一下,如果我们自己写Convert.ToInt32.

而不是调用C#里面给我们写好的.

你要把一个文本123转换成数字123是不是用这个方法?

10、如果我们写好 Convert.Toint32这个函数了.

但是用户使用的时候,输入的不是123.

而是Convert.ToInt32("abc");

那怎么办?

你总不能写成 a*100+b*10*+c吧!

所以,在这种情况下,为了告诉你输入错误,就会抛一个异常给你,程序运行到这里就停止了,如果不处理的话,程序就死了.

出现异常位置的地方,后面的任何代码都不会执行.

C#中的异常是什么及如何使用?

11、那么我们怎么来解决这个问题呢!

按照以下代码.

但我们除数不为0正常的时候,软件就会正确执行try里面的代码.

try{}里面代表可能会出错的异常代码.

但是如果为0的话,直接就会

进入catch(){},而异常后面的代码将不再执行.

try代表尝试是否有异常.

catch代表如果有异常,我就抓住.

并且把异常赋值给ex

然后把具体的异常信息显示出来.

也就是ex.Message/

C#中的异常是什么及如何使用?

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢