bug处理方式分享
一、断点调试
二、异常处理try{} catch{} finally{}
try{
//可能出现异常的代码;绝对不能出现异常的重要代码
}
catch{
//如果出现了异常,那么执行以下代码
}
finally{
//不管有无异常,最终肯定必须要执行的代码
}
三、打印、输出
1、alert();//弹窗提示,打印string类型
2、console.log(); //控制台输出,类型不限
3、response.write();//后台输出
4、打日志到本地文件,生成txt(代码演示)
public partial class test : System.Web.UI.Page
{
public string name = "";
public string date = "";
protected void Page_Load(object sender, EventArgs e)
{
var today = DateTime.Now.ToString("yyyy-MM-dd");
// Response.Write("today的值:" + today);
name = "小红";
try
{
//可能出现异常的代码;绝对不能出现异常的重要代码
date = DateTime.Parse(name).ToString("yyyy-MM-dd");
}
catch (Exception ex)//如果出现了异常,那么执行以下代码
{
// throw new Exception(ex.Message); //抛出异常
WriteError(ex.Message);//写本地日志
}
finally //最终肯定必须要执行的代码
{
date = "0";
}
}
///
/// 用于将错误信息输出到txt文件
///
///错误详细信息
public static void WriteError(string errorMessage)
{
try
{
string path = "./Error/" + DateTime.Today.ToString("yyyyMMdd") + ".txt";
if (!File.Exists(HttpContext.Current.Server.MapPath(path)))
{
File.Create(HttpContext.Current.Server.MapPath(path)).Close();
}
using (StreamWriter w = File.AppendText(HttpContext.Current.Server.MapPath(path)))//向指定文件增加内容
{
w.WriteLine("{0}", DateTime.Now.ToString(CultureInfo.InvariantCulture));//{0}代表占用位置
w.WriteLine("{0}{1}", "错误信息:", errorMessage);
w.WriteLine("________________________________________________________");
w.Flush();//清空缓冲区数据
w.Close();//关闭读写流
}
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
}
四、小黄鸭大法
小黄鸭不懂程序,所以我们可以向他解释每一行程序的作用,不只是小黄鸭,也可以是任何一个物品。
主要是在 过一下程序的执行顺序及每一步在做什么,对着小黄鸭可以讲出来,可以自问自答。
五、放大bug现象
有些bug不是很明显,那么就想办法增加他的破坏性,把现象放大
六、换种写法与思路
已知bug,写法也没有问题,但就是报错,可以换个思路,详细还能怎么写也可以达到这种效果,哪怕不是直接得到这种效果,
可能需要一个过渡的方式也可以得到一样的效果。
//前台不好调接口就从后台调
protected void Page_Load(object sender, EventArgs e)
{
var matnr = GetValueByQueryString("matnr");
var fab = GetValueByQueryString("fab");
string postData = string.Format("matnr={0}&fab={1}", matnr, fab); // 要发放的数据
byte[] byteArray = System.Text.Encoding.UTF8.GetBytes(postData);
HttpWebRequest objWebRequest = (HttpWebRequest)WebRequest.Create("http://bpmcenter.crmicro.com/bpmsite/forms/userforms/csmc/FAB2_TS/storeq/sto_req.asmx/CheckPihValid"); //发送地址
objWebRequest.Method = "POST";//提交方式
objWebRequest.ContentType = "application/x-www-form-urlencoded";
objWebRequest.ContentLength = byteArray.Length;
Stream newStream = objWebRequest.GetRequestStream(); // Send the data.
newStream.Write(byteArray, 0, byteArray.Length); //写入参数
newStream.Close();
HttpWebResponse response = (HttpWebResponse)objWebRequest.GetResponse();//获取响应
StreamReader sr = new StreamReader(response.GetResponseStream(), System.Text.Encoding.UTF8);
string textResponse = sr.ReadToEnd(); // 返回的数据
Response.AddHeader("Content-Type", "application/xml");
Response.Write(textResponse);
Response.End();
}

浙公网安备 33010602011771号