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:
commit
3cca112d79
1 changed files with 22 additions and 27 deletions
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue