cli: Catch conversion exceptions when making tag values from CLI args

This commit is contained in:
Martchus 2022-03-16 21:09:20 +01:00
parent df1c949f88
commit 30bf73163f
1 changed files with 9 additions and 2 deletions

View File

@ -692,7 +692,12 @@ void setTagInfo(const SetTagInfoArgs &args)
}
// add text value
if (relevantDenotedValue->type != DenotationType::File) {
convertedValues.emplace_back(relevantDenotedValue->value, TagTextEncoding::Utf8, usedEncoding);
try {
convertedValues.emplace_back(relevantDenotedValue->value, TagTextEncoding::Utf8, usedEncoding);
} catch (const ConversionException &e) {
diag.emplace_back(DiagLevel::Critical,
argsToString("Unable to parse value specified for field \"", denotedScope.field.name(), "\": ", e.what()), context);
}
continue;
}
// add value from file
@ -741,7 +746,9 @@ void setTagInfo(const SetTagInfoArgs &args)
convertedValues.emplace_back(std::move(value));
}
} catch (const TagParser::Failure &) {
diag.emplace_back(DiagLevel::Critical, argsToString("Unable to parse specified file \"", path, "\"."), context);
diag.emplace_back(DiagLevel::Critical, argsToString("Unable to parse specified file \"", path, "\": unable to determine MIME type"), context);
} catch (const ConversionException &e) {
diag.emplace_back(DiagLevel::Critical, argsToString("Unable to parse specified file \"", path, "\": ", e.what()), context);
} catch (const std::ios_base::failure &e) {
diag.emplace_back(DiagLevel::Critical,
argsToString("An IO error occurred when parsing the specified file \"", path, "\": ", e.what()), context);