Don't throw exceptions from FlipperStep destructor

Summary: Destructors should never throw, because if they are destructed while an exception is unwinding the stack the program will terminate.

Reviewed By: passy

Differential Revision: D14124423

fbshipit-source-id: 4b3d21663d44160bf24adacca25f50522d952e7c
This commit is contained in:
John Knox
2019-02-19 03:43:07 -08:00
committed by Facebook Github Bot
parent 5a65393b64
commit 77c77b5eb3

View File

@@ -1,12 +1,14 @@
/* /**
* Copyright (c) 2018-present, Facebook, Inc. * Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the LICENSE
* file in the root directory of this source tree.
* *
* This source code is licensed under the MIT license found in the LICENSE
* file in the root directory of this source tree.
*/ */
#include "FlipperStep.h" #include "FlipperStep.h"
#include "FlipperState.h" #include "FlipperState.h"
#include "Log.h"
using facebook::flipper::log;
void FlipperStep::complete() { void FlipperStep::complete() {
isLogged = true; isLogged = true;
@@ -25,6 +27,13 @@ FlipperStep::FlipperStep(std::string step, FlipperState* s) {
FlipperStep::~FlipperStep() { FlipperStep::~FlipperStep() {
if (!isLogged) { if (!isLogged) {
state->failed(name, ""); try {
state->failed(name, "");
} catch (std::exception& e) {
log(std::string("Exception occurred in FlipperStep destructor: ") +
e.what());
} catch (...) {
log("Exception occurred in FlipperStep destructor");
}
} }
} }