由于ASP.NET使用了CLR,因此我们可以使用任何CLR语言来建立web应用程序。CLR的特征之一就是结构化(即尝试或捕捉)的异常的处理(因此不会再有更多VB的On Error Resume Next了)。尽管这个新的结构化的错误处理模型很不错,但是我们还有无可避免地会写入有错误的代码。例如,我们还可以在ASP.NET应用程序中写入代码来连接数据库并从中读取数据。我们也可以将尝试或捕捉模块中的代码封装起来,这样如果不能连接到数据库的话,我们就可以适当地处理错误。
不过,如果在尝试或捕捉模块之外放生异常又会怎么处理呢?如果这一异常没有处理,那么ASP.NET就会抛出一个运行时间错误(详细地告诉我们那里发生了错误,应用程序在干什么)。对于ASP.NET页面,我们可以随意执行Page_Error事件来捕捉所有的未处理的页面错误。在网站建设中如果我们想要在应用程序级别上来捕捉所有未处理的ASP.NET错误,那么我们就可以使用Application_OnError事件来做到这一点。不管何时放生未处理异常,我们都可以把该事件用作“全能捕捉”,同时把异常记录在windows的事件日志中。
错误句柄把VB中的一些内置语句和我们自己的代码块结合在一起,从而最后的用户在使用我们的应用程序时,不会因为错误发生而意外停止。Error Handles是解决代码中可能出现的问题的最后一个机会,它能够使你的最后的用户或者最后的开发者避免碰到不希望得到的结果。Error Handles使我们的应用程序无懈可击,也使我们可能对一些意外情况提前做出处理。
如果我们的应用程序没有提供Error Handles,那么一旦错误发生,VB将毫不留情地是我们的终端用户或终端开发者从我们的应用程序或调用应用程序中退出。因此如果我们不用Error Handles来保护我们的应用程序,我们的终端用户就会经常在ASP页面中看见一些含义模糊的错误消息。他们将仅看到错误号和对与错误的描述。