Inno Setup Exception未被捕获

时间:2016-03-21 15:41:24

标签: inno-setup winhttp winhttprequest

我正在使用具有不受信任的TLS(SSL)证书的域,因此我可以调试一些东西。

这是我的代码:

procedure test();
var
  WinHttpReq: Variant;
begin
  WinHttpReq := CreateOleObject('WinHttp.WinHttpRequest.5.1');
  try
    WinHttpReq.Open('POST', 'https://tv.eurosport.com/', False);
    WinHttpReq.SetRequestHeader('Content-Type', 'application/json');  
    WinHttpReq.Send('');
  except
    MsgBox(IntToStr(WinHttpReq.Status), mbError, MB_OK);
  end;
end;

如果请求出错,我想打印HTTP状态代码。

问题是except子句中的行永远不会执行,而是出现以下错误:
enter image description here

即使我在没有附加调试器的情况下运行可执行文件,它仍会导致错误。

如何处理Inno Setup中的OleObject异常?

1 个答案:

答案 0 :(得分:1)

如您所料,WinHttpReq.Send抛出

  

证书中的主机名无效或与

不匹配

您的except阻止了该异常。从来没有执行过except子句,这是不正确的。

except块中,您尝试阅读WinHttpReq.Status(HTTP状态代码)。但是还没有HTTP状态代码,因为证书验证在任何HTTP交换之前发生。因此WinHttpReq.Status getter抛出了第二个异常:

  

WinHttp.WinHttpRequest:完成此操作所需的数据尚不可用。

你没有任何处理程序。因此异常被Inno Setup本身捕获并显示为"运行时错误"。