如何压制Indy IdHTTP错误信息框?

时间:2015-03-10 08:15:54

标签: indy http-error idhttp c++builder-xe7

我有一个IdHTTP组件,当我收到HTTP错误时(例如404),Indy会显示一个消息框。我想处理这个"沉默"并防止Indy表现出来。

我没有找到任何参数来关闭此功能。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

Indy不显示消息框。它抛出异常。 VCL / FMX框架内部有默认的异常处理程序,如果代码中没有捕获到异常,它将向用户显示一个消息框。因此,只需在代码中捕获异常,例如:

try
{
    IdHTTP1->Get(...);
}
catch (const Exception &)
{
    // do something...
}

如果您需要更好地控制异常过滤,所有Indy特定异常都来自EIdException,并且有许多后代(如EIdHTTPProtocolException),例如:

try
{
    IdHTTP1->Get(...);
}
catch (const EIdHTTPProtocolException &)
{
    // an HTTP error occured, do something...
    // details about the HTTP error are in the exception object
}
catch (const EIdException &)
{
    // a non-HTTP Indy error occured, do something else...
}
catch (const Exception &)
{
    // some other error occured, do something else...
}