src: call Environment::Exit()
for fatal exceptions
Call `Environment::Exit()` rather than the process-wide `exit()` function, since JS exceptions generally only affect the current JS engine instance. PR-URL: https://github.com/nodejs/node/pull/25472 Reviewed-By: Daniel Bevenius <daniel.bevenius@gmail.com> Reviewed-By: Minwoo Jung <minwoo@nodesource.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Anatoli Papirovski <apapirovski@mac.com> Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
This commit is contained in:
parent
84e90decd5
commit
8528c21188
@ -324,7 +324,7 @@ TryCatchScope::~TryCatchScope() {
|
|||||||
if (HasCaught() && !HasTerminated() && mode_ == CatchMode::kFatal) {
|
if (HasCaught() && !HasTerminated() && mode_ == CatchMode::kFatal) {
|
||||||
HandleScope scope(env_->isolate());
|
HandleScope scope(env_->isolate());
|
||||||
ReportException(env_, Exception(), Message());
|
ReportException(env_, Exception(), Message());
|
||||||
exit(7);
|
env_->Exit(7);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -711,7 +711,7 @@ void FatalException(Isolate* isolate,
|
|||||||
// Failed before the process._fatalException function was added!
|
// Failed before the process._fatalException function was added!
|
||||||
// this is probably pretty bad. Nothing to do but report and exit.
|
// this is probably pretty bad. Nothing to do but report and exit.
|
||||||
ReportException(env, error, message);
|
ReportException(env, error, message);
|
||||||
exit(6);
|
env->Exit(6);
|
||||||
} else {
|
} else {
|
||||||
errors::TryCatchScope fatal_try_catch(env);
|
errors::TryCatchScope fatal_try_catch(env);
|
||||||
|
|
||||||
@ -727,7 +727,7 @@ void FatalException(Isolate* isolate,
|
|||||||
if (fatal_try_catch.HasCaught()) {
|
if (fatal_try_catch.HasCaught()) {
|
||||||
// The fatal exception function threw, so we must exit
|
// The fatal exception function threw, so we must exit
|
||||||
ReportException(env, fatal_try_catch);
|
ReportException(env, fatal_try_catch);
|
||||||
exit(7);
|
env->Exit(7);
|
||||||
|
|
||||||
} else if (caught.ToLocalChecked()->IsFalse()) {
|
} else if (caught.ToLocalChecked()->IsFalse()) {
|
||||||
ReportException(env, error, message);
|
ReportException(env, error, message);
|
||||||
@ -738,9 +738,9 @@ void FatalException(Isolate* isolate,
|
|||||||
Local<Value> code;
|
Local<Value> code;
|
||||||
if (!process_object->Get(env->context(), exit_code).ToLocal(&code) ||
|
if (!process_object->Get(env->context(), exit_code).ToLocal(&code) ||
|
||||||
!code->IsInt32()) {
|
!code->IsInt32()) {
|
||||||
exit(1);
|
env->Exit(1);
|
||||||
}
|
}
|
||||||
exit(code.As<Int32>()->Value());
|
env->Exit(code.As<Int32>()->Value());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user