匿名委托将Try/Catch写成javascript的style
本人的事例是在web中应用的,思想是用扩展方法的try/catch包住匿名委托要做的事情。
工具类中写的扩展方法:
/// <summary>
/// 说明:异常日志、异常提示
/// 作者:wp
/// </summary>
/// <param name="page">页面</param>
/// <param name="doHandler">匿名委托</param>
public static void TryDo(this System.Web.UI.Page page, Action doHandler)
{
TryDoSLOK(page, doHandler, null);
}
/// <summary>
/// 说明:异常日志、异常提示
/// 作者:wp
/// </summary>
/// <param name="page">页面</param>
/// <param name="doHandler">匿名委托</param>
/// <param name="finallyHandler">匿名委托</param>
public static void TryDo(this System.Web.UI.Page page, Action doHandler, Action finallyHandler)
{
try
{
doHandler();
}
catch (Exception ex)
{
ExceptionLog.ErrorLog(ex.ToString());
WebPublic.ShowMsgBox(page, page.GetType(), ex);
}
finally
{
if (finallyHandler!=null)
finallyHandler();
}
}
page中应用:
protected void Page_Load(object sender, EventArgs e)
{
//var argument = ......
//........
this.TryDo(() =>
{
//use argument do....
});
}
在匿名委托的内部调用TryDo外部的变量,有点像javascript的闭包是不?
浙公网安备 33010602011771号