| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 409 人关注过本帖
标题:[原创]出现了错误,试着自己找找看!
只看楼主 加入收藏
铲铲
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:506
专家分:0
注 册:2006-5-2
结帖率:100%
收藏
 问题点数:0 回复次数:0 
[原创]出现了错误,试着自己找找看!

程序员永远都要和程序错误打交道,差错排错是基本功。好在VisualStudio这样的开发工具提供了强大的功能来帮助你排除编写错误,运行时错误等等。这些工具的搭配几乎可以解决所有程序编码上的问题,所以善于用好它,会受益匪浅!

1、这里所谓的错误,实际上还可以分一个类型——警告。一般,出现警告,程序仍然可以编译和运行,但是可能会出现难以预料的问题。而出现错误一般是不能被编译通过的。

错误无非几种:程序代码字符错,这种类型的错误在编译器进行编译的时候就会发现并提示你。

图片附件: 游客没有浏览图片的权限,请 登录注册


这些提示大多都可以看懂,而且双击则定位到出错的位置,方便修改。

逻辑错误,这类错误一般可能编译器发现不了,但是在编译通过后执行的过程启动时发生了错误。这类错误我手上暂时没有图。例如典型C++中数组越界这一类问题,编译器不会去检查,但是运行时越界,则会发生问题。

运行时错误。运行时错误大多数是异常。而且一般来说,排除程序本身思路有错误,则运行时错误大多可以由try-catch语句块来处理。因为运行时错误是无法在写代码的时候预料到的,特别是在用户输入、IO处理、数据库操作等等功能上,往往由于很多因素的影响而产生错误。很多初学者的代码中一般都不写try-catch,一方面可能不易理解try-catch的用法,二来都不是商业应用程序,自己编写作练习,不用那么规范。其实最好还是规范起来,小到一个IO操作。如果能在运行时捕获到错误并且进行了恰当处理,程序不会因此而中止。这样的程序才具有鲁棒性。

2、用Debug查错。VS中debug设置下提供了很多差错的方式。
在代码行左侧,设置断点,当程序以debug设置运行时,到达断点处就会停下,这时,你可以在VS的界面中查看中断后程序中的变量和设置,检查他们是否正确等。
图片附件: 游客没有浏览图片的权限,请 登录注册


图片附件: 游客没有浏览图片的权限,请 登录注册

这张界面显示了在断点中断后执行单步操作。左下角的“自动”窗口显示了VS认为可能需要显示的相关变量的名和值。右侧的“调用堆栈”显示了那些方法被调用。
你还可以为某个变量添加监视:

图片附件: 游客没有浏览图片的权限,请 登录注册

只不过要监视的变量要有效。断点所在的范围不能超过变量的可见性范围。

你甚至可以简单地将鼠标移到变量上,显示如下的窗口,你可以检查甚至修改它的值:
图片附件: 游客没有浏览图片的权限,请 登录注册




3、网站的排错与故障检查
网站同样可以像程序那样排错和检查。为你的网页的代码提供设置断点,或者使用F11来单步执行,发现网站上的错误。

使用try-catch语句,善于使用try-catch语句,安排在适当的地方来处理可能的异常,而不要抛给应用程序,否则就出现“黄屏”错误了。一般来说,在本地调试中,出现黄屏错误会给出详细的错误信息。但是放到服务器上,错误信息就不见了,而是出现这样的信息:
图片附件: 游客没有浏览图片的权限,请 登录注册


很多人奇怪这样的信息并且发帖子附上这图来询问问题。其实,这上面没有包含任何错误信息。错误信息对远程屏蔽了。他仅仅是建议你修改一下你的web.config文件,添加如上的一段XML语句,使得运行时错误能够发送到用户。

所以出现这样的错误时。修改一下web.config文件,然后重复执行操作让问题重现。既然得到了具体问题,那么就不难使用VS的各种排错工具来排错。如果实在是无法解决,那么再发到论坛让大家一起帮你解决。

注意!当你修改了让customsErrors="off",那么无论任何人只要使用出现错误就会将详细的错误信息发送给他,这样做和危险,至少可能泄露网站的隐私信息。而且,在生产网站上,进行release编译后,这些错误应尽量不会出现。

4、不要让“黄屏”出现!
“黄屏”的出现意味着程序已经发生了错误而终止。如果是简单的拼写错误,编译的初期就能够被检查出来,黄屏错误大多数是运行时抛出的异常。而往往初学者忽略对异常的应用。这些异常得不到处理,最终使程序终止。在一个即将准备进入生产的网站,设计的初期就应该考虑优秀的代码结构尽可能地捕获异常并处理,使得程序按照预想的方式进行,用户不会感觉太糟。大多数异常抛出涉及IO操作,数据库操作,用户输入等等。

要知道什么地方会产生什么异常也不难。到MSDN上看看,例如SqlCommand.ExecuteNonQuery()方法,将会抛出的异常列于下方:
图片附件: 游客没有浏览图片的权限,请 登录注册



5、建议:对于初学者,我仍然建议参考MSDN,另外,养成写程序的良好习惯也很重要,学习怎么使用try-catch,VS的错误处理工具等,很多论坛上的问题就迎刃而解了。同时,希望在论坛发帖前,最好能够自己找到并排出错误,培养自己找问题的能力。
2006-06-19 08:49
快速回复:[原创]出现了错误,试着自己找找看!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025704 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved