【前言】
平时我们做的项目,出现bug之后就会直接提示bug的具体问题,但是这对于用户来说,使用体验是非常差的,一方面是用户也看不懂这个问题,报出bug就相当于在告诉用户,我这里有问题,然后用户以后就不想用你这个程序了,另一方面是,有心人士会根据你报出来的bug,明白你程序是怎么运行怎么写的,这就暴露机密了吧。
下面来说一下,程序运行出现问题,我们怎么“文明”的提醒。
【web】
首先说一下牛腩中的错误提醒,这个是用的web。
直接写一个提示错误的网页,【error.html】里面直接提示出错了,但是不告诉你那里有错误,然后停留一段时间之后直接跳转到主窗体。
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>出错啦~~~</title>
<link href="css/login.css" rel="stylesheet" type="text/css" />
<script language="javascript" type="text/javascript">
var i = 5;//倒计时五秒钟
var intervalid;
intervalid = setInterval("fun()", 1000);//触发函数*
function fun() {
if (i == 0) {
window.location.href = "default.aspx";//跳转窗口
clearInterval(intervalid);
}
document.getElementById("mes").innerHTML = i;
i--;
}
</script>
</head>
<body>
<div id="errorfrm" class="round1">
<h3>出错啦~~~</h3>
<div id="error">
<img src="../images/error.gif" alt="" />
<p>系统出错,请联系管理员!</p>
<p>将在 <span id="mes">5</span> 秒钟后返回首页!</p>
</div>
<div id="footer">
版权所有 © 牛腩&众志网
</div>
</div>
</body>
</html>
最后在web.config文件中调用就可以了。
<!-- 出现错误的时候自动导向 -->
<customErrors mode="On" defaultRedirect="~/error.htm"/>
显示界面就是这样哒~

【C#】
说到这里就想起来了刚刚结束的机房收费系统,和web不一样的地方在于,机房遇到问题就直接把问题抛出来,不会影响继续运行程序。
借助try…catch语句,如果执行不成功,就直接把问题抛出来。
try
{
bossIBLL.addUser(userEntity);
MessageBox.Show("添加成功");
this.Close();
}
//出现异常直接抛出问题
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
但是这里抛出来的问题是不会具体提示是哪里有问题的,只是提示问题可能是什么原因。
本文介绍如何在Web应用和C#程序中优雅地处理错误提示,避免直接暴露问题细节给用户,提升用户体验。对于Web应用,通过自定义错误页面并设置自动跳转;对于C#程序,则采用try...catch语句捕获异常。
430





