Handling Errors
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;
}