Handling Errors#

This topic describes how to handle AVBlocks errors.

When a class method encounters an error during its execution, the method returns 0 (FALSE), and an ErrorInfo objects is generated. You can get the ErrorInfo object by calling the error method of the corresponding class, for example MediaInfo::error or Transcoder::error.

This example shows how you might handle an error if the MediaInfo::open method did not succeed:

auto info = primo::make_ref(Library::createMediaInfo());

info->inputs()->at(0)->setFile(opt.avfile.c_str());

if(info->open())
{
    printStreams(info.get());
    return true;
}
else
{
    printError(info->error());
    return false;
}

The ErrorInfo::facility, ErrorInfo::code, and the ErrorInfo::message methods return the component in which the error happened, the error code, and the error message. In addition for most errors the ErrorInfo::hint method may provide additional useful information.

The following example shows how you can use the ErrorInfo object:

void printError(const primo::error::ErrorInfo* e)
{
    if (primo::error::ErrorFacility::Success == e->facility())
    {
        wcout << L"Success";
    }
    else
    {
        wcout << L"facility: " << e->facility() << L", error: " << e->code();

        if (e->message())
        {
            wcout << L", " << e->message();
        }

        if (e->hint())
        {
            wcout << L", " << e->hint();
        }
    }

    wcout << endl;
}