none
try catch 无法捕捉到错误 RRS feed

  • 问题

    • 在我们能够验证您的帐户前,正文文本不能包含图片和链接。(如何解决?)

    图片地址:https://social.msdn.microsoft.com/Forums/getfile/735282

    首先 上图的代码 为什么我的判断无效 而且报错是在括号上面的

    我写了一个 静态函数 大概代码如下:

    public class WebHelper{
        ...
        public static RequestResult GetRequestResult(string strUrl, string strRefer...) {
            string strHtml = null;
            byte[] byData = null;
            HttpWebRequest request = null;
            HttpWebResponse response = null;
            ...
            try {
                response = (HttpWebResponse)request.GetResponse();  //timed out
                ...
                RequestResult rr = new RequestResult(request, response, strHtml, byData);
                return rr;
            } catch (WebException ex) {
                if (ex.Response == null) throw ex;
                response = (HttpWebResponse)ex.Response;            //Response = null
                strHtml = GetHtmlFromResponse(response, ref byData);
                return new RequestResult(request, response, strHtml, byData);
            } finally {
                request.Abort();
                if (response != null)
                    response.Close();
            }
        }
    }

    而调用的地方则是:

    private void Test(){
        try{
            ...
            RequestResult rr = WebHelper.GetRequestResult("http://...",...);
            ...
        }catch(Exception ex){ ... }//这里也捕捉不到
    }

    具体环境是这样的

    主程序 : A.exe

    WebHelper类 所在代码 : Common.dll

    插件接口 : IPlugin.dll 假设接其中一个函数名 -> GetWeb(string)

    插件 : Plugin.dll -> 引用Common.dll 调用 WebHelper.GetRequestResult(...)

    ----------------------------------------------------------------------------------------

    主程序(A.exe)也会调用WebHelper在不停的获取一些链接 然后一些链接会给插件(Plugin.dll) 处理 整个过程是多线程的

    然而问题是 每次出现这样的错误的时候 我去查看[call stack] 发现都是调用插件的时候(接口变量.GetWeb(strUrl)) 才会出现这样的问题 而且并不是每次都出现这种情况 有一定的概率性

    而GetWeb() 里面的代码 就如上面 Test() 里面的代码差不多 这个问题出现很久了 一直不知道要怎么处理

    2015年10月19日 14:25