lvl
is an enum class
.
switch(lvl)
{
case LogLevel::Trace:
return "Trace";
case LogLevel::Debug:
return "Debug";
case LogLevel::Info:
return "Info";
case LogLevel::Warning:
return "Warning";
case LogLevel::Error:
return "Error";
case LogLevel::Fatal:
return "Fatal";
default:
assert(0 && "Unhandled LogLevel in LevelToStr"); return "???"; // This one?
throw std::invalid_argument( "Unhandled LogLevel in LevelToStr" ); // or this one?
}
По общему мнению, default
должно быть, но мнения в связанный вопрос разделены на то, что он должен делать. Разбить все это? Разбить текущую ветку? Пытаться аккуратно обработать исключение?
В комментариях стороны приводят некоторые аргументы, но обсуждение не совсем однозначное.
Может ли кто-нибудь дать исчерпывающий ответ, какой из них следует использовать или в каких условиях?
Can you really write a book on which one to choose depending on your situation?
Вы хотите сказать, что нет целых книг, посвященных исключениям? Я был бы удивлен, если бы это было так. - person uh oh somebody needs a pupper   schedule 09.05.2016