关于错误处理的 是这样在我的网站中有个cs类当它出现异常的时候我想把这个异常信息传送到error.aspx中去现在问题出来了在类cs中不能使用respon.那么怎么发送这个string error到error.aspx?error = error中去呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 try { con.Open(); com.ExecuteNonQuery(); } catch (Exception ee) { return 0; } finally { con.Close(); } return 1;cs类中的代码这里有个ee你如何把这个ee传到error.aspx中去呢? error.aspx是专门处理错误的页面 在.aspx中调用这个 cs文件try{在此调用这个可能会发生错误的 cs 文件}catch(){ 如果发生错误,那么在这里捕捉然后 response.Redirect("error.aspx")} 这种处理方法是不合理的。思路:1.遇到异常的时候抛出(throw)即可,要带上错误信息try{//...........}catch(Exception ex){ throw new Exception(ex.Message);}2.在Global.asax.cs的Application_Error中捕获异常(只给你个思路,具体意思自己看吧)protected void Application_Start(Object sender, EventArgs e){ Application["msg"]=1; Application["tag"]=1;}protected void Application_Error(Object sender, EventArgs e){ try { if(Convert.ToInt32(Application["tag"])>2) { Application["tag"]=1; return; } Application["tag"]=Convert.ToInt32(Application["tag"])+1; Exception objErr = Server.GetLastError().GetBaseException(); Application["errorPage"] = Request.Url.ToString(); Application["errorMsg"] =objErr.Message; Server.ClearError(); Response.Redirect("Error.aspx"); } catch{}}3.异常处理页面Error.aspx.cs:private void Page_Load(object sender, System.EventArgs e){ if(!IsPostBack) { try { Application["tag"]=1; lblError.Text=this.lblErrorPage.Text+Application["errorPage"].ToString()+"<br>"+this.lblErrorMsg.Text+Application["errorMsg"].ToString(); MessageBox.ShowPopupWin(this,"","",30000); Web.Class.WriterLog log = new Artdio.Web.Class.WriterLog( Server.MapPath(@"./Log/Error.log"));//写日志 log.WriterError(Application["errorPage"].ToString(),Application["errorMsg"].ToString()); } catch{} }}Error.aspx:<%@ Page language="c#" Codebehind="Error.aspx.cs" AutoEventWireup="false" Inherits="Artdio.Web.Error" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" ><HTML> <HEAD> <title>Error</title> <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1"> <meta name="CODE_LANGUAGE" Content="C#"> <meta name="vs_defaultClientScript" content="JavaScript"> <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5"> <LINK href="./Css/outlook/default.css" type="text/css" rel="stylesheet"> </HEAD> <body MS_POSITIONING="GridLayout"> <form id="Form1" method="post" runat="server"> <asp:Label id="lblErrorMsg" style="Z-INDEX: 102; LEFT: 424px; POSITION: absolute; TOP: 392px" runat="server" Visible="False">异常信息: </asp:Label> <br> <br> <br> <div style="WIDTH:100%" align="center"> <div align="center" style="BORDER-RIGHT:#ff6600 1px dotted; PADDING-RIGHT:20px; BORDER-TOP:#ff6600 1px dotted; PADDING-LEFT:20px; PADDING-BOTTOM:25px; MARGIN:auto; BORDER-LEFT:#ff6600 1px dotted; WIDTH:660px; PADDING-TOP:25px; BORDER-BOTTOM:#ff6600 1px dotted; BACKGROUND-COLOR:#fffcec"> <img src="./images/error.gif" border="0" alt="提示:" align="absMiddle"> <asp:Label id="lblError" runat="server"></asp:Label> <br> </div> </div> <asp:Label id="lblErrorPage" style="Z-INDEX: 101; LEFT: 312px; POSITION: absolute; TOP: 392px" runat="server" Visible="False">发生异常页:</asp:Label> </form> </body></HTML> 如果不用上面的方法,直接在 cs 类文件中也是可以跳转到 .aspx 文件中的,如下//先在 .cs 类文件中导入System.Web 什么的 然后如下: public void theComExecuteNonQuery(string Sql, Page thePage) { try { SqlCommand command = new SqlCommand(theSql, sqlconn); command.ExecuteNonQuery(); sqlconn.Close(); command.Dispose(); } catch (Exception ex) { sqlconn.Close(); thePage.Redirect("error.aspx"); } } 如果不用上面的方法,直接在 cs 类文件中也是可以跳转到 .aspx 文件中的,如下 //先在 .cs 类文件中导入System.Web 什么的 然后如下: public void theComExecuteNonQuery(string Sql, Page thePage) { try { SqlCommand command = new SqlCommand(theSql, sqlconn); command.ExecuteNonQuery(); sqlconn.Close(); command.Dispose(); } catch (Exception ex) { sqlconn.Close(); //应该是 thePage.Response.Redirect("error.aspx"); } } using System.WebHttpContext.Current.Response.xxx() 我在cs文件没有找到thePage这个好象用不了,,是要包含哪个类吗 类里面throw(ee);出来,到web目录下面的的Global.asax.cs的Application_Error函数中进行处理 不建议这么做,这样在每个地方都要写这个跳转,一旦修改要修改整个项目。采用在Global.asax.cs中处理的好处是维护方便,代码简洁,错误统一捕获处理。 打印和打印预览的问题 高手请进 Attributes问题 如何取得页面访问(停留时间),每个规定的页面都要记录,实现的功能是跟踪每个用户的浏览进度 新手请教下自己写的类的问题 急救命!调试后出现的怪问题 关于新闻类的图片放置在哪里好?数据库还是文件夹? 哪位高手说一下这个网页的表格行边框线是怎么做到的? asp.net mvc json 传回后台 问题 错误: 对非共享成员的引用需要对象引用 菜鸟提问 icyer及各位高手,帮帮忙!我又有问题了,谢谢!!!!! fileupload控件暴露 asp.net 2.0: GridView如何使每页行数固定?并且添加删除行时也固定行数?
{
con.Open();
com.ExecuteNonQuery();
}
catch (Exception ee)
{
return 0;
}
finally
{
con.Close();
}
return 1;cs类中的代码
这里有个ee
你如何把这个ee传到error.aspx中去呢?
try
{在此调用这个可能会发生错误的 cs 文件}catch()
{
如果发生错误,那么在这里捕捉然后 response.Redirect("error.aspx")
}
思路:
1.遇到异常的时候抛出(throw)即可,要带上错误信息
try
{
//...........
}
catch(Exception ex)
{
throw new Exception(ex.Message);
}
2.在Global.asax.cs的Application_Error中捕获异常(只给你个思路,具体意思自己看吧)
protected void Application_Start(Object sender, EventArgs e)
{
Application["msg"]=1;
Application["tag"]=1;
}
protected void Application_Error(Object sender, EventArgs e)
{
try
{
if(Convert.ToInt32(Application["tag"])>2)
{
Application["tag"]=1;
return;
}
Application["tag"]=Convert.ToInt32(Application["tag"])+1;
Exception objErr = Server.GetLastError().GetBaseException();
Application["errorPage"] = Request.Url.ToString();
Application["errorMsg"] =objErr.Message;
Server.ClearError();
Response.Redirect("Error.aspx");
}
catch{}
}
3.异常处理页面Error.aspx.cs:
private void Page_Load(object sender, System.EventArgs e)
{
if(!IsPostBack)
{
try
{
Application["tag"]=1;
lblError.Text=this.lblErrorPage.Text+Application["errorPage"].ToString()+"<br>"+this.lblErrorMsg.Text+Application["errorMsg"].ToString();
MessageBox.ShowPopupWin(this,"","",30000);
Web.Class.WriterLog log = new Artdio.Web.Class.WriterLog( Server.MapPath(@"./Log/Error.log"));//写日志
log.WriterError(Application["errorPage"].ToString(),Application["errorMsg"].ToString());
}
catch{}
}
}
Error.aspx:<%@ Page language="c#" Codebehind="Error.aspx.cs" AutoEventWireup="false" Inherits="Artdio.Web.Error" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>Error</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
<LINK href="./Css/outlook/default.css" type="text/css" rel="stylesheet">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<asp:Label id="lblErrorMsg" style="Z-INDEX: 102; LEFT: 424px; POSITION: absolute; TOP: 392px"
runat="server" Visible="False">异常信息: </asp:Label>
<br>
<br>
<br>
<div style="WIDTH:100%" align="center">
<div align="center" style="BORDER-RIGHT:#ff6600 1px dotted; PADDING-RIGHT:20px; BORDER-TOP:#ff6600 1px dotted; PADDING-LEFT:20px; PADDING-BOTTOM:25px; MARGIN:auto; BORDER-LEFT:#ff6600 1px dotted; WIDTH:660px; PADDING-TOP:25px; BORDER-BOTTOM:#ff6600 1px dotted; BACKGROUND-COLOR:#fffcec">
<img src="./images/error.gif" border="0" alt="提示:" align="absMiddle">
<asp:Label id="lblError" runat="server"></asp:Label>
<br>
</div>
</div>
<asp:Label id="lblErrorPage" style="Z-INDEX: 101; LEFT: 312px; POSITION: absolute; TOP: 392px"
runat="server" Visible="False">发生异常页:</asp:Label>
</form>
</body>
</HTML>
//先在 .cs 类文件中导入System.Web 什么的 然后如下:
public void theComExecuteNonQuery(string Sql, Page thePage)
{
try
{
SqlCommand command = new SqlCommand(theSql, sqlconn);
command.ExecuteNonQuery();
sqlconn.Close();
command.Dispose();
}
catch (Exception ex)
{
sqlconn.Close();
thePage.Redirect("error.aspx"); }
}
//先在 .cs 类文件中导入System.Web 什么的 然后如下:
public void theComExecuteNonQuery(string Sql, Page thePage)
{
try
{
SqlCommand command = new SqlCommand(theSql, sqlconn);
command.ExecuteNonQuery();
sqlconn.Close();
command.Dispose();
}
catch (Exception ex)
{
sqlconn.Close();
//应该是
thePage.Response.Redirect("error.aspx"); }
}
好象用不了,,
是要包含哪个类吗
采用在Global.asax.cs中处理的好处是维护方便,代码简洁,错误统一捕获处理。