首页 新闻 会员 周边 捐助

为什么我的.net web应用程序在异常时不中止!

0
悬赏园豆:200 [已关闭问题] 关闭于 2013-10-03 10:48

protected void Page_Load(object sender, EventArgs e)
{
  int y = 0;
  int x = 0 / y;
}

这样一段代码,如果在Int y=0;设置断点可以停止,但是继续向下运行到int x=0/y时程序不会在这一行代码处中止,而是直接将错误输出到网页上!这是为什么呀?难以进行异常调试呀!

C神的主页 C神 | 初学一级 | 园豆:16
提问于:2013-09-30 13:10
< >
分享
所有回答(7)
0

你又没断点在异常上,肯定走下去了啊。

你可以用try catch包围,然后断点catch块。

幻天芒 | 园豆:37205 (高人七级) | 2013-09-30 13:22

因为vs在断点处会暂停的,我可以通过此查看到错误原因,变量 。。。

支持(0) 反对(0) C神 | 园豆:16 (初学一级) | 2013-09-30 13:25

@C神: 这种情况,只能说明你的异常被拦截了。检查Global.asax文件的Application_Error方法,是否做了统一的异常处理。这里处理了异常,VS是不会拦截的。

或者是,Page类或者父类上重写了OnError方法,也相当于处理了异常:

protected override void OnError(EventArgs e)
{
base.OnError(e);
Response.Write(Server.GetLastError().Message);
}

支持(0) 反对(0) 幻天芒 | 园豆:37205 (高人七级) | 2013-09-30 14:07

@幻天芒: VS只会处理未被拦截的异常,哈哈~

支持(0) 反对(0) 幻天芒 | 园豆:37205 (高人七级) | 2013-09-30 14:09

@幻天芒: 项目中没有global.asax文件,所以哪里会拦截异常呢?而且异常是直接输出到网页上了!

支持(0) 反对(0) C神 | 园豆:16 (初学一级) | 2013-09-30 14:18

@C神: 比如加了我写的那句,异常就不会被拦截了,而会被输出到页面上,其实要看在哪儿被拦截了。很简单,在异常语句出单步即可。

支持(0) 反对(0) 幻天芒 | 园豆:37205 (高人七级) | 2013-09-30 14:25
0

你建的项目有问题吧。

guwoow | 园豆:611 (小虾三级) | 2013-09-30 13:41

是的,这是我预期的效果,可是我运行时就直接过去了,没有提示!而如果在错误代码之前一行代码设断点,代码是可以停止的!

支持(0) 反对(0) C神 | 园豆:16 (初学一级) | 2013-09-30 13:52
0

一、你没有在}处设断点。所以会过去。二、按理说程序编译时能通过的,所以不会再编译的时候抛异常三、但是0/0这种算法是错误的,0不能做除数。

Andyabc | 园豆:202 (菜鸟二级) | 2013-09-30 13:43

我故意用这个错误的,我想说的是,调试时VS不会在错误代码处中止,不能出现如楼上的效果!

支持(0) 反对(0) C神 | 园豆:16 (初学一级) | 2013-09-30 13:54

@C神: Page_Load方法所在的类,有没有继承Page类,如果没有是不会抛异常的

支持(0) 反对(0) Andyabc | 园豆:202 (菜鸟二级) | 2013-09-30 14:01

@Andyabc: 有继承的,这不是代码问题,是VS的问题,正常情况下遇到异常应该出现楼上的界面,但是现在没有出来这样的界面!

支持(0) 反对(0) C神 | 园豆:16 (初学一级) | 2013-09-30 14:07
0

看看你建的项目是否在debug模式下,正常因该再那一行报错的。你新建一个干净的项目试试看

小兵仔 | 园豆:1240 (小虾三级) | 2013-09-30 14:33

是debug模式呀,在项目下建立了一个控制台程序,那个是可以提示异常的!

支持(0) 反对(0) C神 | 园豆:16 (初学一级) | 2013-09-30 14:58

@C神: 你的web项目是否有其它处理异常的HttpModule

支持(0) 反对(0) 小兵仔 | 园豆:1240 (小虾三级) | 2013-09-30 16:49

@小兵仔: 我连web.config和global.asax都删除了!!

支持(0) 反对(0) C神 | 园豆:16 (初学一级) | 2013-09-30 17:03
0

1、检查web.confg中debug设置为true <compilation debug="true" targetFramework="4.0">

2、运行->cmd->iisapp 确认附件进程的iis端口是否正确

3、加上断点

心在遠方 | 园豆:209 (菜鸟二级) | 2013-09-30 16:19
0

应该是页面有缓存造成的

到最后 | 园豆:121 (初学一级) | 2013-10-01 22:50
0

几经努力,不惜重装都没有解决这个问题,无意中发现了vs竟然有异常设置功能,而且好像只能在跳出异常助手时才可以设置,于是进入后将所有的异常捕捉打开,搞定问题!话说这个为什么是隐藏功能呢???感谢各位博友的热心回答!

C神 | 园豆:16 (初学一级) | 2013-10-03 10:43
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册