标签:
今天查看网页源代码,无意发现源代码尾部抛出asp的错误信息,但没有显示在网页上。
如果没查看源代码,还没发现asp运行代码出错了。
大致情况是这样,在asp中,有一个变量来表示用户当前使用的容量,注意这个变量是字符串,格式如: 20.3M, 50.6G
最后一个字符不是M,就是G
程序中需要做一个判断,如果用户使用的容量超过 50G,就弹出提示信息了,相关代码如下:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
<%str = "59.3G"if right(str,1) = "G" and cdbl(replace(str,"G","")) > 50 then response.write("> 50G") else response.write("< 50G") end if%> |
运行输出结果: > 50G
当 str = "600.3M"的时候, 程序就抛出错误了:
Microsoft VBScript 运行时错误 (0x800A000D)
类型不匹配: ‘cdbl‘
并没有输出我所期望的: < 50G
我们用同样的逻辑判断,使用java来改写一下:
|
1
2
3
4
5
6
7
8
9
10
|
String str = "59.3G"; if(str.endsWith("G") && Double.parseDouble(str.replaceAll("G", "")) > 50){ System.err.println("> 50G");} else{ System.err.println("< 50G");} |
输出的结果:
> 50G
如果 String str = "630.3M";
输出的结果:
< 50G
总结:
从上面的两种代码来看,在asp中,当判断多个条件时(and),当第一个条件不成立的时候,还会继续判断下一个条件是否成立:
再来一段验证代码:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
<%function abc() response.write("abc()...<br>") abc = trueend functionstr = "59.3M"int xif right(str,1) = "G" and abc then response.write("> 50G") else response.write("< 50G") end if%> |
输出:
abc()...
< 50G
而在 java 代码中,当进行多个条件(与, &)判断时,当第一个条件不成立的时候,就不会再进行下面的条件判断,不再执行下面的判断代码了。
2014-04-02
标签:
原文地址:http://www.cnblogs.com/personnel/p/4584939.html