你应该用:
string message = "";
try
{
  throw new Exception("My exception");
}
catch (Exception ex)
{
  message = ex.ToString();
}
finally
{
  Response.Write(message);
}

解决方案 »

  1.   

    string message = "" ;
    try
    {
    throw new Exception("My Exception!");
    }
    catch(Exception ex){
             message = ex.ToString();   
    }
    finally{
    Response.Write (message);
    }
      

  2.   

    HttpServerUtility.GetLastError() 方法用于处理未被捕获的异常,一般用在 Page.Error 事件中
      

  3.   

    this.Error+=new EventHandler(Test1_Error); private void Test1_Error(object sender, EventArgs e)
    {
    if(Server.GetLastError()!=null)
    {
    Response.Writew(Server.GetLastError().ToString());
    }
    }
      

  4.   

    void Page_Load(object sender, EventArgs s)
    {
      Error += new EventHandler(MyErrorHandler);
    }void MyErrorHandler(object sneder EventArgs s)
    {
      Exception ex = Server.GetLastError();
      if (ex != null) Response.Write(ex.ToString());
    }
      

  5.   

    楼上两位的方法我怎么还是不能调试通过呢??
    源程序:
    public class test1 : System.Web.UI.Page
    {
    private void Page_Load(object sender, System.EventArgs e)
    {
    try
    {
    throw new Exception("AS0002");
    }
    catch{}
    } #region Web 窗体设计器生成的代码
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
    }

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {    
    this.Load += new System.EventHandler(this.Page_Load);
    this.Error += new System.EventHandler(this.test1_Error);
    }
    #endregion private void test1_Error(object sender, System.EventArgs e)
    {
    if(Server.GetLastError()!=null)
    {
    Response.Write (Server.GetLastError().ToString());
    }
    else{
    Response.Write ("no error");
    }
    }
    }
    执行时页面上什么也没有,好像test1_Error根本没有被调用一样!为什么?
      

  6.   

    Server.GetLastError(),是在IIS里捕获错误对象
    而在try catch是在本机对象中捕获异常对象,运行机理不一样
      

  7.   

    HttpServerUtility.GetLastError() 方法用于处理未被捕获的异常,一般用在 Page.Error 事件中
    而在下面的代码中, 异常被 catch 语句捕获了,所以当然不会调用 test1_Error 了.
    private void Page_Load(object sender, System.EventArgs e)
    {
      try
      {
        throw new Exception("AS0002");
      }
      catch{}
    }
    正确的做法是:
    private void Page_Load(object sender, System.EventArgs e)
    {
      throw new Exception("AS0002");
    }
      

  8.   

    贴主自己没有说清楚,你要说明你的代码是要捕获错误还是要处理未被捕获的错误。
    上面的代码是对的,你自己没有对asp.net的执行模式有了解。
    如果要捕获错误,那么这个代码
    try
    {
      throw new Exception("My exception");
    }
    catch (Exception ex)
    {
      message = ex.ToString();
    }
    finally
    {
      Response.Write(message);
    }是对的,如果要处理未被捕获的错误,那么在Global或在Page的后台代码里面都可以处理,方法是处理Page.Error事件。
      

  9.   

    to:TomMax(笑望人生) 
    确实是我没有说清楚,我本来是想“处理未被捕获的错误”你的代码我没有疑问,关键是后面的那句“在Global或在Page的后台代码里面都可以处理,方法是处理Page.Error事件”能否提供一个例子代码,我无论如何也不能执行Page.Error事件。可以看我的另一个帖子:
    关于如何做通用异常处理?
    http://expert.csdn.net/Expert/topic/2949/2949318.xml?temp=.343075谢谢!
      

  10.   

    解决了,原来是缺少一个 Server.ClearError();算是教训吧,我找了它好几天...555...
    谢谢楼上几位热心,和另外一个帖子一起结贴.
      

  11.   

    你可以做一个类myerrors.cs,专门处理异常,接受其他页面传来的Exception,对他进行处理,转到errorpage.aspx
    如:
    public geterrors(Exception errs)
    {
    Response.Redirect("errorpage.aspx?msg="+errs.ToString())
    }其他页面:
    try
    {
    .....
    }
    catch(Exception ex){
            myerrors.geterrors(ex)
    }