浅谈asp编程中的测试打印、有效性检查及错误处理。不足之处请高手(尤其是斑竹大人)指教

编程|错误|错误处理|打印

    经常看到一些初学asp的朋友为了测试一个值到处用response.write来打印,

而要看页面效果时再删除这些语句或加上注释,在正式版本出来以前要如此反复

多次。而有些人为了减少麻烦,干脆全当它是正确的,不做测试输出,像这样极

易出现各种各样的问题,最常见的是如果要生成一条sql语句,需要使用变量,如

果不做测试打印,很难做到一次正确,在chinaasp论坛里经常见到这种问题,老

是有人问这条语句为什么会出错等问题,实际上他只要打印出这条语句看一下语

法是否正确就行了,而不必到处追着人问。事实上好的编程习惯应该是在自己没

有很大把握的情况下把生成的语句或变量值打印出来,但这样做又费时费力,有

没有比较好的解决方法呢?
    在C里可以使用 _DEBUG这样的测试开关来控制debug版本和release版本,但

asp中并没有类似#define这种语句,那么是不是我们就没有办法了呢?其实我们

可以仿照c的这种做法,那就是在global.asa文件里定义一个application变量来

控制,象下面这个例子:

在global.asp里加上:
application("DEBUG") = 1

然后做这么一个过程:
'--------------------------------------------------------
'Name:            PRINT
'Argument:        a_strPrint:    打印字符串
'Return:        
'Description:    打印(仅在DEBUG状态下运行)
'Hitory:        Create by bigeagle
'--------------------------------------------------------
Sub PRINT(a_strPrint)
    if Application("DEBUG") = 1 then
        Response.Write("<P aling=center>"+a_strPrint+"</P>")
    end if
End Sub

    这个过程的功能就是当测试开关打开时(application("DEBUG") = 1)打印

,而当测试开关关闭(application("DEBUG") = 0)就不会有打印输出了。这样

在程序调试期间,你可以打开测试开关,以观察变量的值,而当要看页面效果或

发布release版本时就可以关闭测试开关,这样所有的测试输出就不会出现在页面

上。

    以上谈到的是变量的测试输出,下面要谈谈正确性检测问题。经常见到很多

人把页面提交过来或数据库取出的值想都不想就用,根本不做正确性检测,那你

怎么能保证这些值的正确性呢?比如有一个input,提交后它的值应该是一个值包

含数字的字符串,但如果用户的输入包含其他字符,若不做正确性检测,那当你

用cint或clng转换时就会发生错误,整个程序崩溃。另外一种情况是这样,当你

从数据库中取值或诸如此类的操作,应该是不会发生问题,但如果出现数据库出

错等问题,那么用户也只能见到一个诸如'odbc错误'等等的提示信息,对于一个

成熟的商品程序来说,这点是很不好的,其实现在包括国内很多知名站点也出现

这种问题。所以应该养成这样一个习惯,那就是任何可能出问题的变量、参数在

使用之前都应该做正确性检测,并且对数据库操作后应当判断否成功。这是就又出现一个版本问题,如果是DEBUG版则应显示出错信息以备修改,而release版则应该引导到一个统一页面,如“本站暂时出现未知故障,请稍候再来"等等,原则上永远不要给用户一个系统出错信息页面。要实现上述功能,请看以下几个函数和过程。

'--------------------------------------------------------
'Name:            ASSERT
'Argument:        a_blnConditon:    断言条件
'                a_FunctionName:    调用函数
'                a_ErrorString:    错误描叙    
'Return:        
'Description:    断言
'Hitory:        Create by Bigeagle
'--------------------------------------------------------
Sub ASSERT(a_blnConditon,a_FunctionName,a_ErrorString)
    if Application("DEBUG") = 0 then
        if a_blnConditon <> TRUE then
           response.redirect("../include/bigerror.asp")
        end if
    else
        if a_blnConditon <> TRUE then
           call print("断言错误:在<font color=red>" + a_FunctionName + "</font>出现:" + a_ErrorString)
           response.end
            
        end if
            
    end if
    
End Sub

    这个过程的作用是检测变量或参数有效性,如果条件a_blnCondition<>true,那么如果测试开关打开,则显示错误信息,如果测试开关关闭,则重定向到错误处理页面bigerror.asp。

'--------------------------------------------------------
'Name:            CheckError
'Argument:        
'Return:      &nb

时间: 2024-09-12 20:38:57

浅谈asp编程中的测试打印、有效性检查及错误处理。不足之处请高手(尤其是斑竹大人)指教的相关文章

asp编程中的测试打印、有效性检查及错误处理

编程|错误|错误处理|打印 经常看到一些初学asp的朋友为了测试一个值到处用response.write来打印, 而要看页面效果时再删除这些语句或加上注释,在正式版本出来以前要如此反复 多次.而有些人为了减少麻烦,干脆全当它是正确的,不做测试输出,像这样极 易出现各种各样的问题,最常见的是如果要生成一条sql语句,需要使用变量,如 果不做测试打印,很难做到一次正确,在chinaasp论坛里经常见到这种问题,老 是有人问这条语句为什么会出错等问题,实际上他只要打印出这条语句看一下语 法是否正确就行

浅谈ASP程序设计中数据库文件调用的捷径

程序|设计|数据|数据库 引言 本文针对ASP程序设计中最基础.也是最关键的部分"数据库文件的调用"进行说明,同时谈谈ASP程序设计中数据库文件调用的一些技巧. ASP简介 ASP(Active Server Pages)是微软于1996年推出的Web应用程序开发技术,它是一种脚本语言.ActiveX组件及HTML语言等的综合,微软把它描述为"一个服务器的脚本环境,在这里可以生成和运行动态的.交互的.高性能的Web服务器应用程序".其主要功能是为生成动态的.交互式的

浅谈ASP编程的思路与纠错

编程 对于用ASP技术编程的初学者来说,无从下手是第一感觉,笔者曾经有这么一段经历.经过一番"磨难"以后,你就会找到灵感.现将本人编程中积累的一些经验,拟成本文,奉献给读者. 1 首先要学习一些例子程序. 接到任务后,不要盲目地急于编写代码,而是先看一下别人成功的例子,然后在其上修改或模仿调试,这样会加快你熟悉的速度.例如,关于ASP编程的教科书上经常有这么一个例子出现,即显示系统当前时间的语句:<%=now()%> ,别看这么简单的一条语句,里边却包含了ASP的编程思想和

浅谈ASP.NET中最简单的自定义控件

这篇文章主要简单介绍了ASP.NET中最简单的自定义控件,以及核心代码示例,需要的朋友可以参考下 ASP.NET用户控件一般适用于产生相对静态的内容,所以没有builtin的事件支持.本文讨论用户控件返回事件的方法. 假定用户控件(UserControl.ascx)中包含按钮控件AButton,希望实现按AButton按钮时,包含该用户控件的页面可以接收到事件.为此,小鸡射手在用户控件和页面的代码中分别作了处理. UserControl.ascx.cs中的处理: 1. 定义public的事件委托

浅谈Swift编程中switch与fallthrough语句的使用_Swift

在 Swift 中的 switch 语句,只要第一个匹配的情况(case) 完成执行,而不是通过随后的情况(case)的底部,如它在 C 和 C++ 编程语言中的那样.以下是 C 和 C++ 的 switch 语句的通用语法: 复制代码 代码如下: switch(expression){    case constant-expression  :       statement(s);       break; /* optional */    case constant-expressio

浅谈ASP.NET中最简单的自定义控件_实用技巧

ASP.NET用户控件一般适用于产生相对静态的内容,所以没有builtin的事件支持.本文讨论用户控件返回事件的方法.  假定用户控件(UserControl.ascx)中包含按钮控件AButton,希望实现按AButton按钮时,包含该用户控件的页面可以接收到事件.为此,小鸡射手在用户控件和页面的代码中分别作了处理.         UserControl.ascx.cs中的处理:         1. 定义public的事件委托,如ClickEventHandler;         2.

浅谈ASP.NET中多层架构

  Asp.net的多层架构主要是为了解决数据层,逻辑层,表示层等之间的关系.我的做法是这样的:首先建立一个DataCore的基类.基类里面封装了一些低层的数据库的基本操作,比如说数据库联接,调用存储过程等等. 很多人对开发多层应用程序感到一定的困难.来看一个例子:对于一个只有一两个人的小公司,一个人可能同时担当老板.出纳.会计.市场.销售.开发等多项工作.而对于一个大公司,就会进行比较严密的分工,每个人只完成一部分工作,需要彼此配合才能保证正常运转.以前的开发程序就类似于一个小公司,从用户界面

浅谈Java编程中的单例设计模式_java

写软件的时候经常需要用到打印日志功能,可以帮助你调试和定位问题,项目上线后还可以帮助你分析数据.但是Java原生带有的System.out.println()方法却很少在真正的项目开发中使用,甚至像findbugs等代码检查工具还会认为使用System.out.println()是一个bug. 为什么作为Java新手神器的System.out.println(),到了真正项目开发当中会被唾弃呢?其实只要细细分析,你就会发现它的很多弊端.比如不可控制,所有的日志都会在项目上线后照常打印,从而降低运

浅谈多线程编程中的误区

虽然很多程序员可以对异步.GCD等等与线程相关的概念说的天花乱坠.但是实质上深挖本质的话,大多数人并不能很好的区分Race Condition,Atomic,Immutable对象在线程安全中真正起到的作用. 所以今天就以这篇文章来谈谈我所理解的线程安全. 首先就允许我从Immutable来开始整篇话题吧. Immutable 最近几年,Immutable这个说法开始越来越流行.比如用过Swift的人都知道,Swift相较于Objective-C有一个比较明显的改动就是将结构体(Struct)和