1
1
Fork 0
mirror of https://github.com/NixOS/nix.git synced 2025-11-09 03:56:01 +01:00

Revert "libmain: Catch logger exceptions in handleExceptions"

This reverts commit 90d1ff4805.

The initial issue with EPIPE was solved in 9f680874c5.
Now this patch does move bad than good by eating up boost::io::format_error that are
bugs.

(cherry picked from commit 4f5af471fb)
This commit is contained in:
Sergei Zimmerman 2025-10-23 23:49:41 +03:00 committed by github-actions[bot]
parent 61f09a36f8
commit 993a58e2f6

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