你应该用:
string message = "";
try
{
throw new Exception("My exception");
}
catch (Exception ex)
{
message = ex.ToString();
}
finally
{
Response.Write(message);
}
string message = "";
try
{
throw new Exception("My exception");
}
catch (Exception ex)
{
message = ex.ToString();
}
finally
{
Response.Write(message);
}
解决方案 »
- 怎样用程序把flv转换成MP4格式
- GRIDVIEW的数据导出excel表
- DataList如何实现单选
- 在ASP.NET中在DataGrid分页的情况下如何实现全部内容打印?
- 第一次用webservice请给予帮助啊,前辈些
- Help Help Help Help Help Help Help Help Help Help Help Help Help Help
- 在asp.net中的toolbar控件中放置了一个textbox服务器端控件,如何实现在该textbox中输入完数据按回车键后执行后台cs中指定的过程?
- 大家快来看啊,这个是什么错误啊
- time="2014-11-28 14:05:44" id="15487" name="王吉" 如何取舍,才能分别得到 time ,id, name 的值
- 水晶报表浏览出错
- 建立ASP.NET技术问题讨论QQ群如何啊
- 推荐几本做控件的好书,谢谢;
try
{
throw new Exception("My Exception!");
}
catch(Exception ex){
message = ex.ToString();
}
finally{
Response.Write (message);
}
{
if(Server.GetLastError()!=null)
{
Response.Writew(Server.GetLastError().ToString());
}
}
{
Error += new EventHandler(MyErrorHandler);
}void MyErrorHandler(object sneder EventArgs s)
{
Exception ex = Server.GetLastError();
if (ex != null) Response.Write(ex.ToString());
}
源程序:
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根本没有被调用一样!为什么?
而在try catch是在本机对象中捕获异常对象,运行机理不一样
而在下面的代码中, 异常被 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");
}
上面的代码是对的,你自己没有对asp.net的执行模式有了解。
如果要捕获错误,那么这个代码
try
{
throw new Exception("My exception");
}
catch (Exception ex)
{
message = ex.ToString();
}
finally
{
Response.Write(message);
}是对的,如果要处理未被捕获的错误,那么在Global或在Page的后台代码里面都可以处理,方法是处理Page.Error事件。
确实是我没有说清楚,我本来是想“处理未被捕获的错误”你的代码我没有疑问,关键是后面的那句“在Global或在Page的后台代码里面都可以处理,方法是处理Page.Error事件”能否提供一个例子代码,我无论如何也不能执行Page.Error事件。可以看我的另一个帖子:
关于如何做通用异常处理?
http://expert.csdn.net/Expert/topic/2949/2949318.xml?temp=.343075谢谢!
谢谢楼上几位热心,和另外一个帖子一起结贴.
如:
public geterrors(Exception errs)
{
Response.Redirect("errorpage.aspx?msg="+errs.ToString())
}其他页面:
try
{
.....
}
catch(Exception ex){
myerrors.geterrors(ex)
}