问:为什么有这么多种异常?
答:有很多种情况下你都可能会写出C# 无法应付的问题。如果程序只是给出一个概述的错误信息,那么检错就会变得很困难。如果确切的知道出了什么错误再去检错就容易多了。
问:说真的,什么是异常?
答:它是程序出问题的时候.NET 创建的一个对象。
问:等会,什么?它是一个对象?
答:对,异常就是一个对象。一个异常中的属性告诉你关于异常的信息。比如,它有一个Message 属性,异常窗口就是靠它生成的。 .NET 生成异常就是要给你提供尽可能多的关于执行产生异常的语句的时候发生了什么的信息。
问:我还是不明白。不好意思。为什么有如此多种类的异常呢?
答:因为你的代码有太多种可能以未预期的方式行为。有太多种的情况会导致你的代码崩溃。如果你不知道崩溃的原因,检错就很难了。通过在不同情况下抛出不同的异常,.NET 给你提供了很多很有价值的信息来追踪并修改问题。
问:照这么说,异常是用来帮助我而不是在跟屁股后面给我捣乱的?
答:对!异常就是帮你去预测未预期的行为。很多人见到异常就感觉很沮丧。但是如果你把异常视为.NET 帮你追踪和修改错误的一种方式的话,它就真的可以在你在试着去追踪导致问题的代码的时候帮你一个大忙。
问:这么说,我的代码抛出异常的时候并不一定就是我做错了什么了?
答:对。有时候数据和你预期的不一样。别忘了使用你的代码的人,而人总是以无法预期的方式行为。.NET 就是以这种方式帮你去处理未预期的情况,这样你的代码就可以一直顺利的运行而不会给出晦涩无用的错误信息了。
问:所有的异常都很容易找出来吗?
答:不是,很不幸,有时候你的代码会出问题,而仅仅是看看代码很难找到问题所在。所以IDE 给你一个很有用的工具,叫做 debugger 。它让你暂停你的程序并逐语句的执行,并且在此过程中检查每个变量和字段的值。这样,找出未预期的代码就比较容易了。这是找到并修改异常的最好时机,或者,一开始就避免了异常会更好。
异常就是为了帮你找到并修改某些以你未预期的方
式行为的代码的情况。