protected void Page_Load(object sender, EventArgs e)
{
int y = 0;
int x = 0 / y;
}
这样一段代码,如果在Int y=0;设置断点可以停止,但是继续向下运行到int x=0/y时程序不会在这一行代码处中止,而是直接将错误输出到网页上!这是为什么呀?难以进行异常调试呀!
你又没断点在异常上,肯定走下去了啊。
你可以用try catch包围,然后断点catch块。
因为vs在断点处会暂停的,我可以通过此查看到错误原因,变量 。。。
@C神: 这种情况,只能说明你的异常被拦截了。检查Global.asax文件的Application_Error方法,是否做了统一的异常处理。这里处理了异常,VS是不会拦截的。
或者是,Page类或者父类上重写了OnError方法,也相当于处理了异常:
protected override void OnError(EventArgs e)
{
base.OnError(e);
Response.Write(Server.GetLastError().Message);
}
@幻天芒: VS只会处理未被拦截的异常,哈哈~
@幻天芒: 项目中没有global.asax文件,所以哪里会拦截异常呢?而且异常是直接输出到网页上了!
@C神: 比如加了我写的那句,异常就不会被拦截了,而会被输出到页面上,其实要看在哪儿被拦截了。很简单,在异常语句出单步即可。
你建的项目有问题吧。
是的,这是我预期的效果,可是我运行时就直接过去了,没有提示!而如果在错误代码之前一行代码设断点,代码是可以停止的!
一、你没有在}处设断点。所以会过去。二、按理说程序编译时能通过的,所以不会再编译的时候抛异常三、但是0/0这种算法是错误的,0不能做除数。
我故意用这个错误的,我想说的是,调试时VS不会在错误代码处中止,不能出现如楼上的效果!
@C神: Page_Load方法所在的类,有没有继承Page类,如果没有是不会抛异常的
@Andyabc: 有继承的,这不是代码问题,是VS的问题,正常情况下遇到异常应该出现楼上的界面,但是现在没有出来这样的界面!
看看你建的项目是否在debug模式下,正常因该再那一行报错的。你新建一个干净的项目试试看
是debug模式呀,在项目下建立了一个控制台程序,那个是可以提示异常的!
@C神: 你的web项目是否有其它处理异常的HttpModule
@小兵仔: 我连web.config和global.asax都删除了!!
1、检查web.confg中debug设置为true <compilation debug="true" targetFramework="4.0">
2、运行->cmd->iisapp 确认附件进程的iis端口是否正确
3、加上断点
应该是页面有缓存造成的
几经努力,不惜重装都没有解决这个问题,无意中发现了vs竟然有异常设置功能,而且好像只能在跳出异常助手时才可以设置,于是进入后将所有的异常捕捉打开,搞定问题!话说这个为什么是隐藏功能呢???感谢各位博友的热心回答!