正常情况下,context.Response.Write()可以返回结果,我想在出错的情况下提示错误信息,下面这样不行。
catch (Exception e) { context.Response.Write(e.Message);}
这里需要注意什么吗?
你这抛出来的是包含了堆栈信息的错误,对于用户来说肯定是不友好的,对于开发人员来说也不一定可以看懂,
最好是输出自定义的错误信息,然后加个日志功能,将异常记录到日志中,也便于发布后排查错误
是的,但是即使是堆栈错误也没出来。这才是我关注的点。
@清海扬波: e.ToString() 试试
不能输出错误吗?
不能,但是正常的输出是可以的。catch里面的不行。
@清海扬波: 你确定有异常抛出吗?可以在里面手动Throw一个异常,看看输出结果是什么
@木龙哥: 前面我说错了,手动抛可以,但是操作数据库,比如主键重复这样的错误通过断点可以看到错误,但是抛不出来。
@清海扬波: 你看一下有没有被其他方法捕获,是很大的项目吗?可以一步一步调试进去,看方法的执行过程。
@木龙哥: 现在又可以了,昨天不行,我试试看发布出去行不行,谢谢了。
需要注意的是 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()
}
你有断点跟踪过吗,返回的exception是什么值?
现在又可以了,昨天不行,我试试看发布出去行不行,谢谢了。
异常的堆栈信息不是在 e.StackTrace里吗。我写入异常日志的时候,写入了好几个,类似这样,ex.Message+ex.StackTrace+ex.InnerException
都可以,关键是要有提示。