lvl
ist ein enum class
.Nicht behandelter Enum-Klassenwert in switch() - Exception oder Assert?
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?
}
Der Konsens ist die default
sollte es sein, aber die Meinungen in der related question sind geteilt, was sollte es tun. Crash das Ganze? Den aktuellen Thread abstürzen? Versuchen Sie, die Ausnahme ordnungsgemäß zu behandeln?
Die Seiten präsentieren einige Argumente in den Kommentaren, aber die Diskussion ist nicht ganz schlüssig.
Könnte jemand eine umfassende Antwort geben, welche verwendet werden sollte oder unter welchen Bedingungen?
Also, Schluss mit den Stimmen und Schlussabstimmung: Niemand wirklich weiß. –
_ "Also, mit den Stimmen schließen und Stimmen schließen ..." _ Nein, Ihre Schlussfolgerung ist falsch. Es ist Ihre Frage, die an erster Stelle _too breit_, _in erster Linie meinungsbezogen_ ist. –
@ πάνταῥεῖ: Genau zwei Optionen. Kannst du wirklich ein Buch schreiben, auf das du je nach deiner Situation auswählst? Und ist es nur eine Frage des persönlichen Geschmacks und niemand kann ein zwingendes logisches Argument präsentieren, wo welches besser ist? –