请问异常和错误是两个不同的概念吗?

winzond 2020-06-28 06:51:22
void Application_Error(object sender, EventArgs e)
{
// 在出现未处理的错误时运行的代码
Result result = new Result();
result.code = "-1";
result.msg = Server.GetLastError().ToString();
if (Context != null)
Context.ClearError();
Response.ContentType = "text/plain";
Response.Write(new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(result));
}

我人为制造了一个异常(将SQL SERVER关闭了),上面代码没有产生作用,系统仍然提示用户未处理的异常,请问异常和错误是两个不同的概念吗?什么情况下,上面代码会执行呢?
...全文
1953 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
正怒月神 版主 2020-06-29
  • 打赏
  • 举报
回复
全局异常捕获。 逻辑你自己改改就是了。 https://blog.csdn.net/hanjun0612/article/details/49868285
by_封爱 2020-06-29
  • 打赏
  • 举报
回复
vs调试一定会执行到错误的代码. 部署到iis就正常了.
顾初 2020-06-29
  • 打赏
  • 举报
回复
vs调试一定会执行到错误的代码. 部署到iis就正常了.
winzond 2020-06-28
  • 打赏
  • 举报
回复
引用 3 楼 以专业开发人员为伍 的回复:
这是“运行时”在生产服务器上的最后一次给程序员显示bug堆栈信息的机会。而且只有打开这个开关才会起作用。 你把项目部署到生产用服务器(真实的 IIS 等 web 服务器对外环境,而不是你的 vs 调试环境)上去,就能看到最后的 asp.net 错误捕获页面了。实际上这些就好像是一个汽车研发工厂即使是不负责任、不经过测试把概念车不经检验而直接卖给用户,不会“让用户随便撞死”,而是在汽车上仍然装上各种紧急事件传感器和处理机制来记录问题。但是这个汽车研发工厂的工程师难道能够因为“反正汽车在卖出去之后出事故了会有记录”就不去做好测试和改bug了吗? 而一个软件开发工程师,就要在 vs 调试环境每天经过成千上万次地让程序跑过每一处代码,就是要让 bug 尽早跳出来,尽早用 vs 调试器捕获并且立刻改错。而不是反过来纠结“为什么没有被 vs 调试器忽视掉”的问题。
哈哈,我就是一个没有经过系统学习、完全自学的菜鸟级别而已我现在的解决办法是在每个被ajax的页面都try了,catch部分都是相同代码,本来想是操作数据库的时候再try,但是页面首先就判断参数分支了,必须得分支前就try,差不多就是整个页面都在try内了。问题是解决了,但重复代码太多了,看着不太舒服,今天重温书籍,看到Appliction对象,才想着能不能去掉这些重复代码
  • 打赏
  • 举报
回复
使用 vs 进行专业地调试,才是程序员的本职工作。

有些人用一些比较 low 的 asp.net 开发工具,一看其操作就知道他不会使用强大的“即时”调试工具,仅仅是用一堆文本来输出日志。这显然是最底层的维护人员。
  • 打赏
  • 举报
回复
引用 2 楼 winzond 的回复:
设置了<customErrors mode="Off"></customErrors>,仍然不生效,还是VS中断并报错
请教,达到我想要的目的的方法,实际我不是想自定义错误,我是想把错误信息原封不动地返回给客户端的,这样容易判断错误出现的位置

这是“运行时”在生产服务器上的最后一次给程序员显示bug堆栈信息的机会。而且只有打开这个开关才会起作用。

你把项目部署到生产用服务器(真实的 IIS 等 web 服务器对外环境,而不是你的 vs 调试环境)上去,就能看到最后的 asp.net 错误捕获页面了。实际上这些就好像是一个汽车研发工厂即使是不负责任、不经过测试把概念车不经检验而直接卖给用户,不会“让用户随便撞死”,而是在汽车上仍然装上各种紧急事件传感器和处理机制来记录问题。但是这个汽车研发工厂的工程师难道能够因为“反正汽车在卖出去之后出事故了会有记录”就不去做好测试和改bug了吗?

而一个软件开发工程师,就要在 vs 调试环境每天经过成千上万次地让程序跑过每一处代码,就是要让 bug 尽早跳出来,尽早用 vs 调试器捕获并且立刻改错。而不是反过来纠结“为什么没有被 vs 调试器忽视掉”的问题。
winzond 2020-06-28
  • 打赏
  • 举报
回复
引用 1 楼 mirror030 的回复:
如果你希望请求处理过程中产生的异常被asp.net的这个管道事件捕获到,需要看看几个地方 否则即使发生异常,也触发不了这个事件 webconfig看看自定义错误是否关了 <customErrors mode="Off"></customErrors> 还有其它的自定义错误处理地方是否接管了异常处理,否则也触发不了. 如果只是要一个全局的出错处理,也可以不用这个实现,,直接到web服务器配置一个自定义错误也可以的
设置了<customErrors mode="Off"></customErrors>,仍然不生效,还是VS中断并报错 请教,达到我想要的目的的方法,实际我不是想自定义错误,我是想把错误信息原封不动地返回给客户端的,这样容易判断错误出现的位置
mirrorspace 2020-06-28
  • 打赏
  • 举报
回复
如果你希望请求处理过程中产生的异常被asp.net的这个管道事件捕获到,需要看看几个地方 否则即使发生异常,也触发不了这个事件 webconfig看看自定义错误是否关了 <customErrors mode="Off"></customErrors> 还有其它的自定义错误处理地方是否接管了异常处理,否则也触发不了. 如果只是要一个全局的出错处理,也可以不用这个实现,,直接到web服务器配置一个自定义错误也可以的

62,025

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧