重写Exception类出现的问题

copy_paste 2002-08-02 11:24:41
以前写程序时,如果出现错误,一般就是直接抛出一个异常给用户(Delphi),然后Application会捕捉到这个异常,然后把Exception E.Message Show 出来,相对的,我在C# 做的时候,也是如此,在Global.asax中写Application_Error代码:

void Application_Error()
{
Exception E = Server.GetLastError();
Server.ClearError();
Response.Write("程序出错,原因:" + E.Message + "ToString: " + E.ToString());
}


//这是自已写的类,Override原来的Message, ToString()
public class MyException: Exception
{
private string FMessage = string.Empty;
public MyException(string Message)
{
FMessage = Message;
}

public override string Message
{
get { return FMessage; }
}

public override string ToString()
{
String Result = FMessage;
if (Result == String.Empty)
Result = "程序出错";
return Result;
}
}


test:
弄个Button,写Click事件:
throw new MyException("Hello world");

好了,我很奇怪为什么,返回却是一大堆SYstem.Web.UI之类的东东(是不是Debug版问题)
...全文
349 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
copy_paste 2002-08-02
  • 打赏
  • 举报
回复
Nobody?
copy_paste 2002-08-02
  • 打赏
  • 举报
回复
从Global.asax调试来看,Application_Error那个Server.GetLastError()得到的是一个Exception实例,而InnerException才是真正抛出异常的实例,自定义异常在delphi中我经常这样做,因为在出错时,可以根据Exception.ClassName来区别那个模块错了,所以我想这也这样做。

自定义的异常我用的是Exception 继承过来的,ApplicationException是哪里抛出来的?它的Page有一个Error处理。Application有一个Error,还有什么没有?
srnld 2002-08-02
  • 打赏
  • 举报
回复
自定义异常是继承自
public class MyException: Exception
还是
public class MyException: ApplicationException
copy_paste 2002-08-02
  • 打赏
  • 举报
回复
结贴,谁要分的?
copy_paste 2002-08-02
  • 打赏
  • 举报
回复

faint,原来是这样。

void Application_Error()
{
Exception E = Server.GetLastError();
//进行各种异常处理...
Response.Write("程序出错,原因:" + E.InnerException.Message + ",ToString: " + E.InnerException.ToString());
Server.ClearError();
}

110,567

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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