匿名委托将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的闭包是不?

posted on 2013-02-04 13:14  偶厚  阅读(154)  评论(0)    收藏  举报