﻿<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
	<channel>
		<title>旻飞的私人网摘 - Minfy's Personal Digest</title>
		<link>http://www.sudown.cn/</link>
		<description>以IT技术和通信技术为主，同时关注民生、关注人文、关注健康，也包括自己的一些作品</description>
		<copyright>Copyright (C) 2004 Security Angel Team [S4T] All Rights Reserved.</copyright>
		<generator>SaBlog-X Version 1.6 Build 20080806</generator>
		<lastBuildDate>Thu, 09 Sep 2010 11:37:46 +0000</lastBuildDate>
		<ttl>60</ttl>
		<item>
			<guid>http://www.sudown.cn/show-3677-1.html</guid>
			<title>Tomcat 6.0.20</title>
			<author>冷眼观世</author>
			<description><![CDATA[<p>　　Tomcat是Apache 软件基金会（Apache Software Foundation）的Jakarta 项目中的一个核心项目，由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持，最新的Servlet 和JSP 规范总是能在Tomcat中得到体现，因为Tomcat技术先进、性能稳定，而且免费，因而深受Java爱好者的喜爱并得到了部分软件开发商的认可，成为目前比较流行的Web应用服务器。Tomcat很受广大程序员的喜欢，因为它运行时占用的系统资源小，扩展性好，支持负载平衡与邮件服务等开发应用系统常用的功能；而且它还在不断的改进和完善中，任何一个感兴趣的程序员都可以更改它或在其中加入新的功能。</p>
<p>　　下载：<a target="_blank" href="http://people.apache.org/~remm/tomcat-6/v6.0.20/bin/">Tomcat 6.0.20</a><hr />
</p>
<p>Apache Tomcat Version 6.0.20<br />
Release Notes</p>
<p>=============================<br />
KNOWN ISSUES IN THIS RELEASE:<br />
=============================</p>
<p>* Dependency Changes<br />
* JNI Based Applications<br />
* Bundled APIs<br />
* Web application reloading and static fields in shared libraries<br />
* Tomcat on Linux<br />
* Enabling SSI and CGI Support<br />
* Security manager URLs<br />
* Symlinking static resources<br />
* Enabling invoker servlet<br />
* Viewing the Tomcat Change Log<br />
* When all else fails</p>
<p><br />
===================<br />
Dependency Changes:<br />
===================<br />
Tomcat 6.0 is designed to run on JSE 5.0 and later.</p>
<p>In addition, Tomcat 6.0 uses the Eclipse JDT Java compiler for compiling<br />
JSP pages. This means you no longer need to have the complete<br />
Java Development Kit (JDK) to run Tomcat, but a Java Runtime Environment<br />
(JRE) is sufficient. The Eclipse JDT Java compiler is bundled with the<br />
binary Tomcat distributions. Tomcat can also be configured to use the<br />
compiler from the JDK to compile JSPs, or any other Java compiler supported<br />
by Apache Ant.</p>
<p><br />
=======================<br />
JNI Based Applications:<br />
=======================<br />
Applications that require native libraries must ensure that the libraries have<br />
been loaded prior to use. Typically, this is done with a call like:</p>
<p>static {<br />
System.loadLibrary(&quot;path-to-library-file&quot;);<br />
}</p>
<p>in some class. However, the application must also ensure that the library is<br />
not loaded more than once. If the above code were placed in a class inside<br />
the web application (i.e. under /WEB-INF/classes or /WEB-INF/lib), and the<br />
application were reloaded, the loadLibrary() call would be attempted a second<br />
time.</p>
<p>To avoid this problem, place classes that load native libraries outside of the<br />
web application, and ensure that the loadLibrary() call is executed only once<br />
during the lifetime of a particular JVM.</p>
<p><br />
=============<br />
Bundled APIs:<br />
=============<br />
A standard installation of Tomcat 6.0 makes all of the following APIs available<br />
for use by web applications (by placing them in &quot;lib&quot;):<br />
* annotations-api.jar (Annotations package)<br />
* catalina.jar (Tomcat Catalina implementation)<br />
* catalina-ant.jar (Tomcat Catalina Ant tasks)<br />
* catalina-ha.jar (High availability package)<br />
* catalina-tribes.jar (Group communication)<br />
* el-api.jar (EL 2.1 API)<br />
* jasper.jar (Jasper 2 Compiler and Runtime)<br />
* jasper-el.jar (Jasper 2 EL implementation)<br />
* jasper-jdt.jar (Eclipse JDT 3.3 Java compiler)<br />
* jsp-api.jar (JSP 2.1 API)<br />
* servlet-api.jar (Servlet 2.5 API)<br />
* tomcat-coyote.jar (Tomcat connectors and utility classes)<br />
* tomcat-dbcp.jar (package renamed database connection pool based on Commons DBCP)</p>
<p>You can make additional APIs available to all of your web applications by<br />
putting unpacked classes into a &quot;classes&quot; directory (not created by default),<br />
or by placing them in JAR files in the &quot;lib&quot; directory.</p>
<p>To override the XML parser implementation or interfaces, use the endorsed<br />
mechanism of the JVM. The default configuration defines JARs located in<br />
&quot;endorsed&quot; as endorsed.</p>
<p><br />
================================================================<br />
Web application reloading and static fields in shared libraries:<br />
================================================================<br />
Some shared libraries (many are part of the JDK) keep references to objects<br />
instantiated by the web application. To avoid class loading related problems<br />
(ClassCastExceptions, messages indicating that the classloader<br />
is stopped, etc.), the shared libraries state should be reinitialized.</p>
<p>Something which might help is to avoid putting classes which would be<br />
referenced by a shared static field in the web application classloader,<br />
and putting them in the shared classloader instead (JARs should be put in the<br />
&quot;lib&quot; folder, and classes should be put in the &quot;classes&quot; folder).</p>
<p><br />
================<br />
Tomcat on Linux:<br />
================<br />
GLIBC 2.2 / Linux 2.4 users should define an environment variable:<br />
export LD_ASSUME_KERNEL=2.2.5</p>
<p>Redhat Linux 9.0 users should use the following setting to avoid<br />
stability problems:<br />
export LD_ASSUME_KERNEL=2.4.1</p>
<p>There are some Linux bugs reported against the NIO sendfile behavior, make sure you<br />
have a JDK that is up to date, or disable sendfile behavior in the Connector.&lt;br/&gt;<br />
6427312: (fc) FileChannel.transferTo() throws IOException &quot;system call interrupted&quot;&lt;br/&gt;<br />
5103988: (fc) FileChannel.transferTo should return -1 for EAGAIN instead throws IOException&lt;br/&gt;<br />
6253145: (fc) FileChannel.transferTo on Linux fails when going beyond 2GB boundary&lt;br/&gt;<br />
6470086: (fc) FileChannel.transferTo(2147483647, 1, channel) cause &quot;Value too large&quot; exception&lt;br/&gt;</p>
<p><br />
=============================<br />
Enabling SSI and CGI Support:<br />
=============================<br />
Because of the security risks associated with CGI and SSI available<br />
to web applications, these features are disabled by default.</p>
<p>To enable and configure CGI support, please see the cgi-howto.html page.</p>
<p>To enable and configue SSI support, please see the ssi-howto.html page.</p>
<p><br />
======================<br />
Security manager URLs:<br />
======================<br />
In order to grant security permissions to JARs located inside the<br />
web application repository, use URLs of of the following format<br />
in your policy file:</p>
<p>file:${catalina.home}/webapps/examples/WEB-INF/lib/driver.jar</p>
<p>============================<br />
Symlinking static resources:<br />
============================<br />
By default, Unix symlinks will not work when used in a web application to link<br />
resources located outside the web application root directory.</p>
<p>This behavior is optional, and the &quot;allowLinking&quot; flag may be used to disable<br />
the check.</p>
<p>=========================<br />
Enabling invoker servlet:<br />
=========================<br />
Starting with Tomcat 4.1.12, the invoker servlet is no longer available by<br />
default in all webapps. Enabling it for all webapps is possible by editing<br />
$CATALINA_HOME/conf/web.xml to uncomment the &quot;/servlet/*&quot; servlet-mapping<br />
definition.</p>
<p>Using the invoker servlet in a production environment is not recommended and<br />
is unsupported. More details are available on the Tomcat FAQ at<br />
<a href="http://tomcat.apache.org/faq/misc.html#invoker">http://tomcat.apache.org/faq/misc.html#invoker</a>.</p>
<p>==============================<br />
Viewing the Tomcat Change Log:<br />
==============================<br />
See changelog.html in this directory.</p>
<p>====================<br />
When all else fails:<br />
====================<br />
See the FAQ<br />
<a href="http://tomcat.apache.org/faq/">http://tomcat.apache.org/faq/</a></p>
<p><em>来源：互联网络</em></p>]]></description>
			<link>http://www.sudown.cn/show-3677-1.html</link>
			<category domain="http://www.sudown.cn/category-18-1.html">xSP</category>
			<pubDate>2009-05-16 10:07</pubDate>
		</item>
		<item>
			<guid>http://www.sudown.cn/show-1841-1.html</guid>
			<title>实例解析：从IIS的ASP迁移到APACHE的PHP</title>
			<author>冷眼观世</author>
			<description><![CDATA[<p>　　目前在网站服务器软件市场中，开放源码的Apache服务器占据了60%的市场份额，而微软免费捆绑在操作系统当中的IIS排名第二，其市场份额为31%，从总体上看，目前的网站服务器软件市场已经被Apache和IIS瓜分。</p><br /><br /><a href="http://www.sudown.cn/show-1841-1.html" target="_blank">阅读全文</a><br /><br />]]></description>
			<link>http://www.sudown.cn/show-1841-1.html</link>
			<category domain="http://www.sudown.cn/category-18-1.html">xSP</category>
			<pubDate>2008-09-27 14:06</pubDate>
		</item>
		<item>
			<guid>http://www.sudown.cn/show-861-1.html</guid>
			<title>如何更改Tomcat命令行窗口标题</title>
			<author>minfy</author>
			<description><![CDATA[<p>当你在一台WinNT服务器上启动多个 Tomcat 进程时，是不是常常因为无法区分每个进程而烦恼？</p>
<p>下面告诉你如何来修改，打开 Tomcat 安装目录下的 bin 目录，找到里面的 catalina.bat ，用记事本或UE打开它，找到160行左右，如下代码：</p>
<div class="codeText">
<div class="codeHead">Java代码</div>
<ol class="dp-j">
    <li class="alt"><span><span>:doStart &nbsp;&nbsp;</span></span></li>
    <li class=""><span>shift &nbsp;&nbsp;</span></li>
    <li class="alt"><span class="keyword">if</span><span>&nbsp;not&nbsp;</span><span class="string">&quot;%OS%&quot;</span><span>&nbsp;==&nbsp;</span><span class="string">&quot;Windows_NT&quot;</span><span>&nbsp;</span><span class="keyword">goto</span><span>&nbsp;noTitle &nbsp;&nbsp;</span></li>
    <li class=""><span>set&nbsp;_EXECJAVA=start&nbsp;</span><span class="string">&quot;Tomcat&quot;</span><span>&nbsp;%_RUNJAVA% &nbsp;&nbsp;</span></li>
    <li class="alt"><span class="keyword">goto</span><span>&nbsp;gotTitle &nbsp;&nbsp;</span></li>
    <li class=""><span>:noTitle &nbsp;&nbsp;</span></li>
    <li class="alt"><span>set&nbsp;_EXECJAVA=start&nbsp;%_RUNJAVA% &nbsp;&nbsp;</span></li>
    <li class=""><span>:gotTitle &nbsp;&nbsp;</span></li>
    <li class="alt"><span class="keyword">if</span><span>&nbsp;not&nbsp;</span><span class="string">&quot;&quot;</span><span>%</span><span class="number">1</span><span class="string">&quot;&quot;</span><span>&nbsp;==&nbsp;</span><span class="string">&quot;&quot;</span><span>-security</span><span class="string">&quot;&quot;</span><span>&nbsp;</span><span class="keyword">goto</span><span>&nbsp;execCmd &nbsp;&nbsp;</span></li>
    <li class=""><span>shift &nbsp;&nbsp;</span></li>
    <li class="alt"><span>echo&nbsp;Using&nbsp;Security&nbsp;Manager &nbsp;&nbsp;</span></li>
    <li class=""><span>set&nbsp;SECURITY_POLICY_FILE=%CATALINA_BASE%\conf\catalina.policy &nbsp;&nbsp;</span></li>
    <li class="alt"><span class="keyword">goto</span><span>&nbsp;execCmd&nbsp;&nbsp;</span></li>
</ol>
</div>
<p>我们要做的就是将其中</p>
<div class="codeText">
<div class="codeHead">Java代码</div>
<ol class="dp-j">
    <li class="alt"><span><span>set&nbsp;_EXECJAVA=start&nbsp;</span><span class="string">&quot;Tomcat&quot;</span><span>&nbsp;%_RUNJAVA%&nbsp;&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<p>修改成</p>
<div class="codeText">
<div class="codeHead">Java代码</div>
<ol class="dp-j">
    <li class="alt"><span><span>set&nbsp;_EXECJAVA=start&nbsp;</span><span class="string">&quot;Web&nbsp;Portal&quot;</span><span>&nbsp;%_RUNJAVA%&nbsp;&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<p>重新启动 Tomcat 就可以啦！快去试试吧～</p>]]></description>
			<link>http://www.sudown.cn/show-861-1.html</link>
			<category domain="http://www.sudown.cn/category-18-1.html">xSP</category>
			<pubDate>2008-02-28 08:51</pubDate>
		</item>
		<item>
			<guid>http://www.sudown.cn/show-773-1.html</guid>
			<title>微软:Windows 7变化幅度不大</title>
			<author>minfy</author>
			<description><![CDATA[<p><font size="2">　　当前的Windows Vista系统与下一代操作系统Windows 7不会进行大幅变动.</font></p>
<p><font size="2">　　微软对Windows Vista系统进行了大幅改革,增加了一些列新功能,如用户账户控制功能(UAC)等.与此同时,这些新功能也给用户带来了诸多不便.</font></p>
<p align="center"><a href="http://www.513spc.net/dw/dw/200708/3766.html" target="_top"><img src="http://www.513spc.net/dw/UploadFiles_2674/200708/20070824185508287.png" align="top" border="0" alt="" /></a></p>
<p>&nbsp;</p>
<p><font size="2">　　当然,Mike Nash并未对Vista增加UAC功能和错过圣诞购物旺季而进行道歉,但他却表示,下一代操作系统Window 7将不会进行如此规模的变动.</font></p>
<p><font size="2">　　微软副总裁Mike Nash表示:&ldquo;我不会对Vista的众多变更而感到后悔,但我相信,Windows 7的变动幅度不会像Vista这样大.&rdquo;</font></p>
<p><font size="2">　　微软分别于去年年底和今年年初推出了Windows Vista企业版和个人版.但时至今日,Vista的普及速度似乎并不尽如人意.据Gartner的调查结果显示,Vista的普及要比此前预期的晚9-12个月.</font></p>
<p><font size="2">　　尽管如此,微软仍多次表示,对Vista的普及速度感到满意.微软首席财务官Chris Liddell还称,明年第一季度Vista SP1发布后,相信企业用户会大规模部署Vista系统.</font></p>
<p><font size="2">　　微软今年7月宣布,计划在3年内推出继Windows Vista之后的新版操作系统,内部代号为Windows 7.</font></p>]]></description>
			<link>http://www.sudown.cn/show-773-1.html</link>
			<category domain="http://www.sudown.cn/category-18-1.html">xSP</category>
			<pubDate>2007-11-18 15:24</pubDate>
		</item>
		<item>
			<guid>http://www.sudown.cn/show-515-1.html</guid>
			<title>On Error Resume Next:VBscript错误处理</title>
			<author>minfy</author>
			<description><![CDATA[<p>　　在VBscript中，可以使脚本解释器不处理其找到的任何错误，并且使用On Error Resume Next语句继续运行下个语句。一旦这个语句已被处理，脚本引擎将继续运行后面的程序，而不理会已经发现的任何错误。然而，这种过程仅适用于顺序执行语句的环境，换句话说，不适用于嵌套的函数或子程序。</p>
<p>　　1、使用On Error Resume Next语句</p>
<p>　　一个错误在子程序中出现时，如果没有运行On Error Resume Next语句，那么错误将被交给调用它的环境，这个过程一直重复到找到运行On Error Resume Next语句的环境继续运行，或者找到缺省的脚本错误处理器，把错误交给ASP并且IIS显示缺省错误网页。</p>
<p>　　这种错误调用链意味着可以创建防止使程序停止运行的运行期错误的函数和子程序。如果在子程序的开头放置一个On Error Resume Next语句，任何运行期错误会中止这个子程序的运行，但是调用该子程序的程序将继续运行而不会引起网页的停止。</p>
<p>　　例如，如果需要向一个文件中写入字符串，可以通过一个独立的函数对文件进行访问文件，防止错误中断整个程序的运行：</p>
<p><code><span style="color: #000000">
<span style="color: #0000BB"></span><span style="color: #DD0000">''''''''&nbsp;</span><span style="color: #0000BB">create&nbsp;a&nbsp;file&nbsp;named&nbsp;strFileName</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">overwriting&nbsp;any&nbsp;existing&nbsp;one&nbsp;with&nbsp;that&nbsp;name<br /></span><span style="color: #DD0000">''''''''&nbsp;</span><span style="color: #007700">and&nbsp;</span><span style="color: #0000BB">writes&nbsp;strContent&nbsp;into&nbsp;it&nbsp;then&nbsp;closes&nbsp;the&nbsp;file<br /></span><span style="color: #DD0000">''''''''&nbsp;</span><span style="color: #0000BB">returns&nbsp;True&nbsp;</span><span style="color: #007700">if&nbsp;</span><span style="color: #0000BB">it&nbsp;succeeds</span><span style="color: #007700">,&nbsp;or&nbsp;</span><span style="color: #0000BB">False&nbsp;on&nbsp;any&nbsp;error<br /></span><span style="color: #007700">Function&nbsp;</span><span style="color: #0000BB">WriteNewFile</span><span style="color: #007700">(</span><span style="color: #0000BB">strFileName</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">strContent</span><span style="color: #007700">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">On&nbsp;Error&nbsp;Resume&nbsp;Next&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">''''''''&nbsp;</span><span style="color: #0000BB">turn&nbsp;off&nbsp;the&nbsp;</span><span style="color: #007700">default&nbsp;</span><span style="color: #0000BB">error&nbsp;handler<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WiteNewFile&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">Flase&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">''''''''&nbsp;</span><span style="color: #007700">default&nbsp;return&nbsp;</span><span style="color: #0000BB">value&nbsp;of&nbsp;</span><span style="color: #007700">function<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Set&nbsp;objFSO&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">CreateObject</span><span style="color: #007700">(</span><span style="color: #DD0000">"scripting.FileSystemObject"</span><span style="color: #007700">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;</span><span style="color: #0000BB">Err</span><span style="color: #007700">.</span><span style="color: #0000BB">Number&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">0&nbsp;Then&nbsp;Set&nbsp;objFile&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">objFSO</span><span style="color: #007700">.</span><span style="color: #0000BB">CreateTextFile</span><span style="color: #007700">(</span><span style="color: #0000BB">strFileName</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">True</span><span style="color: #007700">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;</span><span style="color: #0000BB">Err</span><span style="color: #007700">.</span><span style="color: #0000BB">Number&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">0&nbsp;Then&nbsp;objFile</span><span style="color: #007700">.</span><span style="color: #0000BB">WriteLine&nbsp;strContent<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">If&nbsp;</span><span style="color: #0000BB">Err</span><span style="color: #007700">.</span><span style="color: #0000BB">Number&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">0&nbsp;Then&nbsp;objFile</span><span style="color: #007700">.</span><span style="color: #0000BB">Close<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">If&nbsp;</span><span style="color: #0000BB">Err</span><span style="color: #007700">.</span><span style="color: #0000BB">Number&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">0&nbsp;Then&nbsp;WriteNewFile&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">True<br />End&nbsp;</span><span style="color: #007700">Function</span><span style="color: #0000BB"></span>
</span>
</code>　　注意上面的程序在试图处理每个程序语句之前，先检查VBscript的Err对象的Number属性。如果这个值为0（还没有出现错误），那么就能够继续对文件的定入和创建过程。然而如果错误确实发生了，脚本引擎将设置Err对象的属性的值，并且继续处理下一行。</p>
<p>　　只要不引起错误而能正常运行，函数的返回值将设置为&ldquo;True&rdquo;。否则函数将返回&ldquo;False&rdquo;。在编程中可以在对其进行测试以后，再使用该函数和采取其他行动。</p>
<p>　　下面是一个简单的例子，我们希望对任务的第一部分采用一个独立的函数，以便能更精确地辨别出错误产生在何处。这样，调试时也更容易阅读代码。在页面的主程序中，可以调用三个单独的函数。</p>
<p><code><span style="color: #000000">
<span style="color: #0000BB"></span><span style="color: #007700">If&nbsp;</span><span style="color: #0000BB">CreateNewFile</span><span style="color: #007700">(</span><span style="color: #0000BB">strFileName</span><span style="color: #007700">)&nbsp;</span><span style="color: #0000BB">Then&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">''''''''&nbsp;</span><span style="color: #0000BB">create&nbsp;the&nbsp;</span><span style="color: #007700">new&nbsp;</span><span style="color: #0000BB">file<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Response</span><span style="color: #007700">.</span><span style="color: #0000BB">Write&nbsp;</span><span style="color: #DD0000">"New&nbsp;file&nbsp;successfully&nbsp;created&lt;BR&gt;"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">If&nbsp;</span><span style="color: #0000BB">WriteContent</span><span style="color: #007700">(</span><span style="color: #0000BB">strContent</span><span style="color: #007700">)&nbsp;</span><span style="color: #0000BB">Then&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">''''''''&nbsp;</span><span style="color: #0000BB">write&nbsp;the&nbsp;content<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Response</span><span style="color: #007700">.</span><span style="color: #0000BB">Write&nbsp;</span><span style="color: #DD0000">"Content&nbsp;written&nbsp;to&nbsp;file&lt;BR&gt;"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">Else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Response</span><span style="color: #007700">.</span><span style="color: #0000BB">Write&nbsp;</span><span style="color: #DD0000">"ERROR:&nbsp;Failed&nbsp;to&nbsp;write&nbsp;to&nbsp;the&nbsp;file&lt;BR&gt;"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">End&nbsp;</span><span style="color: #007700">If<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;</span><span style="color: #0000BB">CloseFile</span><span style="color: #007700">(</span><span style="color: #0000BB">strFileName</span><span style="color: #007700">)&nbsp;</span><span style="color: #0000BB">Then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Response</span><span style="color: #007700">.</span><span style="color: #0000BB">Write&nbsp;</span><span style="color: #DD0000">"File&nbsp;closed&lt;BR&gt;"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">Else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Response</span><span style="color: #007700">.</span><span style="color: #0000BB">Write&nbsp;</span><span style="color: #DD0000">"ERROR:&nbsp;Failed&nbsp;to&nbsp;close&nbsp;the&nbsp;file&lt;BR&gt;"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">End&nbsp;</span><span style="color: #007700">If<br />Else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Response</span><span style="color: #007700">.</span><span style="color: #0000BB">Write&nbsp;</span><span style="color: #DD0000">"ERROR:&nbsp;Failed&nbsp;to&nbsp;create&nbsp;the&nbsp;new&nbsp;file&lt;BR&gt;"<br /></span><span style="color: #0000BB">End&nbsp;Funciotn</span>
</span>
</code>　　2、使用On Error Goto 0</p>
<p>　　在ASP 2.0（尽管没有文档记录）和ASP 3.0中，也能使用On Error Goto 0语句恢复缺省的错误处理行为。在运行这个语句后，发生的运行期错误将导致缺省错误处理，在环境链中检查每个嵌套的程序，直到主页面代码。如果没有其他的环境关闭缺省错误处理，网页的执行将停止并显示IIS缺省错误网页。</p>
<p>　　3、VBscript Err对象</p>
<p>　　在前面的例子中，关闭缺省错误处理时，通过检查VBscript Err对象的Number属性，查看错误是否已经出现。Err对象存储了关于运行期错误的信息，表7-3和表7-4给出了VBscript Err对象提供的方法和属性。</p>
<p>Clear <br />清除当前所有的Err对象设置 </p>
<p>Raise <br />产生一个运行期错误 </p>
<p>VBscript Err<br />对象的属性</p>
<p>Description <br />设置或返回一个描述错误的字符串 </p>
<p>Number <br />（缺省）设置或返回指定一个错误的值 </p>
<p>Source <br />设置或返回产生错误的对象的名称 </p>
<p>　　使用这些属性可以检查发生了哪种错误。例如，可以根据错误号采取不同的措施，也可以用Source和Description的属性值为用户提供错误信息，或者传送到一个文件中。</p>
<p>　　也可以使用Err对象生成一个错误。为什么要做这些呢？因为有时想把一个定制的错误消息传送给用户。可以把Err对象的属性设置成所希望的任何值。然后调用Raise方法来产生这种错误，这样做会停止程序的运行，并且把错误沿调用链向回传递。</p>
<p>　　下面的例子显示了在服务器磁盘上读取一个文本文件时，如何处理错误。注意如何使用常数vbObjectError，以确定所选择的错误号不会和一个已存在的错误号混淆。通过把任意选择的错误号加到此常数中，就能够保证和预定义的错误不混淆。</p>
<p><code><span style="color: #000000">
<span style="color: #0000BB">Functoin&nbsp;ReadThisFile</span><span style="color: #007700">(</span><span style="color: #0000BB">strFileName</span><span style="color: #007700">)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">''''''''&nbsp;</span><span style="color: #0000BB">returns&nbsp;the&nbsp;content&nbsp;</span><span style="color: #007700">as&nbsp;</span><span style="color: #0000BB">a&nbsp;string<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;On&nbsp;Error&nbsp;Resume&nbsp;Next<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ReadThisFile&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">"&nbsp;"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;''''''''&nbsp;</span><span style="color: #007700">default&nbsp;return&nbsp;</span><span style="color: #0000BB">value&nbsp;of&nbsp;</span><span style="color: #007700">function<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Set&nbsp;objFSO&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">CreateObject</span><span style="color: #007700">(</span><span style="color: #DD0000">"scripting.FileSystemObject"</span><span style="color: #007700">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Set&nbsp;objFile&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">objFSO</span><span style="color: #007700">.</span><span style="color: #0000BB">OpenTextFile</span><span style="color: #007700">(</span><span style="color: #DD0000">"strFileName"</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">ForReading</span><span style="color: #007700">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Select&nbsp;</span><span style="color: #007700">Case&nbsp;</span><span style="color: #0000BB">Err</span><span style="color: #007700">.</span><span style="color: #0000BB">Number<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">Case&nbsp;</span><span style="color: #0000BB">0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">''''''''&nbsp;</span><span style="color: #0000BB">OK</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">take&nbsp;no&nbsp;action<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">Case&nbsp;</span><span style="color: #0000BB">50</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">53&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">''''''''&nbsp;</span><span style="color: #0000BB">standard&nbsp;file&nbsp;</span><span style="color: #007700">or&nbsp;</span><span style="color: #0000BB">path&nbsp;not&nbsp;found&nbsp;errors<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">''''''''&nbsp;</span><span style="color: #0000BB">create&nbsp;custom&nbsp;error&nbsp;values&nbsp;</span><span style="color: #007700">and&nbsp;</span><span style="color: #0000BB">raise&nbsp;error&nbsp;back&nbsp;up&nbsp;the&nbsp;call&nbsp;chain<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;intErrNumber&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">vbObjectError&nbsp;</span><span style="color: #007700">+&nbsp;</span><span style="color: #0000BB">1073&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">''''''''</span><span style="color: #0000BB">custom&nbsp;error&nbsp;number<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strErrDescription&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">"The&nbsp;file&nbsp;has&nbsp;been&nbsp;deleted&nbsp;or&nbsp;moved.&nbsp;"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">strErrSource&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">"&nbsp;ReadThisFile&nbsp;function"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Err</span><span style="color: #007700">.</span><span style="color: #0000BB">Raise&nbsp;intErrNumber</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">strErrSource</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">strErrDescription<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">Exit&nbsp;Function<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Case&nbsp;Else&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">''''''''&nbsp;</span><span style="color: #0000BB">som&nbsp;other&nbsp;error<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">''''''''&nbsp;</span><span style="color: #0000BB">raise&nbsp;the&nbsp;standard&nbsp;error&nbsp;back&nbsp;up&nbsp;the&nbsp;call&nbsp;chain<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Err</span><span style="color: #007700">.</span><span style="color: #0000BB">Raise&nbsp;Err</span><span style="color: #007700">.</span><span style="color: #0000BB">Number</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">Err</span><span style="color: #007700">.</span><span style="color: #0000BB">Source</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">Err</span><span style="color: #007700">.</span><span style="color: #0000BB">Description<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">Exit&nbsp;Function<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">End&nbsp;Select<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ReadThisFile&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">objFile</span><span style="color: #007700">.</span><span style="color: #0000BB">ReadAll&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">''''''''&nbsp;</span><span style="color: #0000BB">we&nbsp;opened&nbsp;it&nbsp;OK</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">so&nbsp;</span><span style="color: #007700">return&nbsp;</span><span style="color: #0000BB">the&nbsp;content<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;objFile</span><span style="color: #007700">.</span><span style="color: #0000BB">Close<br />End&nbsp;</span><span style="color: #007700">Function</span><span style="color: #0000BB"></span>
</span>
</code></p>
<p>　　调用这个函数的代码可以使用On Error Resume Next语句，并且能捕获这个函数产生的错误。</p>
<p><code><span style="color: #000000">
<span style="color: #0000BB">On&nbsp;Error&nbsp;Resume&nbsp;Next<br />strContent&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">ReadThisFile</span><span style="color: #007700">(</span><span style="color: #DD0000">"myfile,txt"</span><span style="color: #007700">)<br />If&nbsp;</span><span style="color: #0000BB">Err</span><span style="color: #007700">.</span><span style="color: #0000BB">Number&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">0&nbsp;Then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Response</span><span style="color: #007700">.</span><span style="color: #0000BB">Write&nbsp;</span><span style="color: #DD0000">"File&nbsp;content&nbsp;is:&lt;BR&gt;"&nbsp;</span><span style="color: #007700">&amp;&nbsp;</span><span style="color: #0000BB">strContent<br /></span><span style="color: #007700">Else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Response</span><span style="color: #007700">.</span><span style="color: #0000BB">Write&nbsp;</span><span style="color: #DD0000">"Err.Source&nbsp;&amp;&nbsp;"</span><span style="color: #007700">&lt;</span><span style="color: #0000BB">BR</span><span style="color: #007700">&gt;</span><span style="color: #DD0000">"&nbsp;&amp;&nbsp;Err.Description<br />End&nbsp;If</span>
</span>
</code></p>]]></description>
			<link>http://www.sudown.cn/show-515-1.html</link>
			<category domain="http://www.sudown.cn/category-18-1.html">xSP</category>
			<pubDate>2007-06-28 00:42</pubDate>
		</item>
	</channel>
</rss>
