首页 新闻 会员 周边 捐助

一般处理文件异常处理的问题

0
悬赏园豆:30 [已关闭问题] 关闭于 2014-03-20 11:14

正常情况下,context.Response.Write()可以返回结果,我想在出错的情况下提示错误信息,下面这样不行。

catch (Exception e) { context.Response.Write(e.Message);}

 

这里需要注意什么吗?

清海扬波的主页 清海扬波 | 小虾三级 | 园豆:825
提问于:2014-03-06 09:12
< >
分享
所有回答(5)
0

你这抛出来的是包含了堆栈信息的错误,对于用户来说肯定是不友好的,对于开发人员来说也不一定可以看懂,

最好是输出自定义的错误信息,然后加个日志功能,将异常记录到日志中,也便于发布后排查错误

Zery | 园豆:6151 (大侠五级) | 2014-03-06 09:16

是的,但是即使是堆栈错误也没出来。这才是我关注的点。

支持(0) 反对(0) 清海扬波 | 园豆:825 (小虾三级) | 2014-03-06 09:17

@清海扬波: e.ToString() 试试

支持(0) 反对(0) Zery | 园豆:6151 (大侠五级) | 2014-03-06 09:21
0

不能输出错误吗?

木龙哥 | 园豆:144 (初学一级) | 2014-03-06 09:16

不能,但是正常的输出是可以的。catch里面的不行。

支持(0) 反对(0) 清海扬波 | 园豆:825 (小虾三级) | 2014-03-06 09:18

@清海扬波: 你确定有异常抛出吗?可以在里面手动Throw一个异常,看看输出结果是什么

支持(0) 反对(0) 木龙哥 | 园豆:144 (初学一级) | 2014-03-06 09:23

@木龙哥: 前面我说错了,手动抛可以,但是操作数据库,比如主键重复这样的错误通过断点可以看到错误,但是抛不出来。

支持(0) 反对(0) 清海扬波 | 园豆:825 (小虾三级) | 2014-03-06 09:30

@清海扬波: 你看一下有没有被其他方法捕获,是很大的项目吗?可以一步一步调试进去,看方法的执行过程。

支持(0) 反对(0) 木龙哥 | 园豆:144 (初学一级) | 2014-03-06 09:35

@木龙哥: 现在又可以了,昨天不行,我试试看发布出去行不行,谢谢了。

支持(0) 反对(0) 清海扬波 | 园豆:825 (小虾三级) | 2014-03-06 10:10
0

需要注意的是 context.Response.Write 抛出了异常,表明对象的状态不确定,因此再次使用对象的时候就无法预知它的结果。请看下面的例子:

int a = 10;

int b = 0;

try

{

    int c = a / b;   // context.Response.Write()

}

catch(Exception e)

{

     int c = a / b ;   // context.Response.Write()
}

Launcher | 园豆:45050 (高人七级) | 2014-03-06 09:29
0

你有断点跟踪过吗,返回的exception是什么值?

惊梦无痕 | 园豆:206 (菜鸟二级) | 2014-03-06 09:55

现在又可以了,昨天不行,我试试看发布出去行不行,谢谢了。

支持(0) 反对(0) 清海扬波 | 园豆:825 (小虾三级) | 2014-03-06 10:10
0

异常的堆栈信息不是在  e.StackTrace里吗。我写入异常日志的时候,写入了好几个,类似这样,ex.Message+ex.StackTrace+ex.InnerException

Dhoopu | 园豆:10 (初学一级) | 2014-03-06 10:53

都可以,关键是要有提示。

支持(0) 反对(0) 清海扬波 | 园豆:825 (小虾三级) | 2014-03-06 13:07
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册