1
1
Fork 0
mirror of https://github.com/NixOS/nix.git synced 2025-11-08 19:46:02 +01:00

Merge pull request #14353 from NixOS/backport-14343-to-2.31-maintenance

[Backport 2.31-maintenance] Revert "libmain: Catch logger exceptions in `handleExceptions`"
This commit is contained in:
internal-nix-ci[bot] 2025-10-24 23:59:16 +00:00 committed by GitHub
commit 3cca112d79
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -320,34 +320,29 @@ int handleExceptions(const std::string & programName, std::function<void()> fun)
std::string error = ANSI_RED "error:" ANSI_NORMAL " "; std::string error = ANSI_RED "error:" ANSI_NORMAL " ";
try { try {
try { try {
try { fun();
fun(); } catch (...) {
} catch (...) { /* Subtle: we have to make sure that any `interrupted'
/* Subtle: we have to make sure that any `interrupted' condition is discharged before we reach printMsg()
condition is discharged before we reach printMsg() below, since otherwise it will throw an (uncaught)
below, since otherwise it will throw an (uncaught) exception. */
exception. */ setInterruptThrown();
setInterruptThrown(); throw;
throw;
}
} catch (Exit & e) {
return e.status;
} catch (UsageError & e) {
logError(e.info());
printError("Try '%1% --help' for more information.", programName);
return 1;
} catch (BaseError & e) {
logError(e.info());
return e.info().status;
} catch (std::bad_alloc & e) {
printError(error + "out of memory");
return 1;
} catch (std::exception & e) {
printError(error + e.what());
return 1;
} }
} catch (...) { } catch (Exit & e) {
/* In case logger also throws just give up. */ return e.status;
} catch (UsageError & e) {
logError(e.info());
printError("Try '%1% --help' for more information.", programName);
return 1;
} catch (BaseError & e) {
logError(e.info());
return e.info().status;
} catch (std::bad_alloc & e) {
printError(error + "out of memory");
return 1;
} catch (std::exception & e) {
printError(error + e.what());
return 1; return 1;
} }