diff options
author | fedorenko <fedorenko@yandex-team.ru> | 2022-02-23 05:47:23 +0300 |
---|---|---|
committer | fedorenko <fedorenko@yandex-team.ru> | 2022-02-23 05:47:23 +0300 |
commit | 1effc0f096ca382eba8967c92db95f5b51e6212c (patch) | |
tree | 411113210fa6e243844b507f54a44c08f576f811 /util/generic | |
parent | c2f6fa508a2a2c3cc0530319977ec1d37166c0da (diff) | |
download | ydb-1effc0f096ca382eba8967c92db95f5b51e6212c.tar.gz |
rollback r9158440 cause of failed RM tests
ref:7ea361b10868cc51450f6e43c8428e8447e6781d
Diffstat (limited to 'util/generic')
-rw-r--r-- | util/generic/yexception.cpp | 30 | ||||
-rw-r--r-- | util/generic/yexception_ut.cpp | 45 |
2 files changed, 6 insertions, 69 deletions
diff --git a/util/generic/yexception.cpp b/util/generic/yexception.cpp index 7bfed2878d..26c75b5f51 100644 --- a/util/generic/yexception.cpp +++ b/util/generic/yexception.cpp @@ -14,39 +14,21 @@ TString FormatExc(const std::exception& exception) { return TString::Join(TStringBuf("("), TypeName(exception), TStringBuf(") "), exception.what()); } -static TString BackTraceToString(const TBackTrace& backtrace) { - try { - Y_ENSURE(backtrace.size() > 0, "backtrace is empty"); - return backtrace.PrintToString(); - } catch (const std::exception& e) { - return TString::Join("Failed to print backtrace: ", FormatExc(e)); - } -} - TString CurrentExceptionMessage() { auto exceptionPtr = std::current_exception(); if (exceptionPtr) { try { std::rethrow_exception(exceptionPtr); } catch (const yexception& e) { - const TBackTrace* btPtr; -#ifdef _YNDX_LIBUNWIND_ENABLE_EXCEPTION_BACKTRACE - TBackTrace backtrace = TBackTrace::FromCurrentException(); - btPtr = &backtrace; -#else - btPtr = e.BackTrace(); - if (!btPtr) { - return FormatExc(e); + const TBackTrace* bt = e.BackTrace(); + + if (bt) { + return TString::Join(bt->PrintToString(), TStringBuf("\n"), FormatExc(e)); } -#endif - return TString::Join(BackTraceToString(*btPtr), TStringBuf("\n"), FormatExc(e)); + + return FormatExc(e); } catch (const std::exception& e) { -#ifdef _YNDX_LIBUNWIND_ENABLE_EXCEPTION_BACKTRACE - TBackTrace backtrace = TBackTrace::FromCurrentException(); - return TString::Join(BackTraceToString(backtrace), TStringBuf("\n"), FormatExc(e)); -#else return FormatExc(e); -#endif } catch (...) { } diff --git a/util/generic/yexception_ut.cpp b/util/generic/yexception_ut.cpp index 771ae2a9ca..cb3e29fed8 100644 --- a/util/generic/yexception_ut.cpp +++ b/util/generic/yexception_ut.cpp @@ -15,7 +15,6 @@ static inline void Throw2DontMove() { #include <util/random/mersenne.h> #include <util/stream/output.h> #include <util/string/subst.h> -#include <util/string/split.h> #include "yexception_ut.h" #include "bt_exception.h" @@ -49,8 +48,6 @@ class TExceptionTest: public TTestBase { UNIT_TEST(TestBackTrace) UNIT_TEST(TestEnsureWithBackTrace1) UNIT_TEST(TestEnsureWithBackTrace2) - UNIT_TEST(TestCurrentExceptionMessageWithLIBUNWIND) - UNIT_TEST(TestCurrentExceptionMessageWithInvalidBacktraceFormatter) UNIT_TEST(TestRethrowAppend) UNIT_TEST(TestMacroOverload) UNIT_TEST(TestMessageCrop) @@ -131,48 +128,6 @@ private: UNIT_ASSERT(false); } - inline void TestCurrentExceptionMessageWithLIBUNWIND() { -#ifdef _YNDX_LIBUNWIND_ENABLE_EXCEPTION_BACKTRACE - try { - throw std::logic_error("some exception"); // is instance of std::exception - UNIT_ASSERT(false); - } catch (...) { - TString exceptionMessage = CurrentExceptionMessage(); - UNIT_ASSERT(exceptionMessage.Contains("(std::logic_error) some exception")); - TVector<TString> backtraceStrs = StringSplitter(exceptionMessage).Split('\n'); - UNIT_ASSERT(backtraceStrs.size() > 1); - } -#endif - } - - inline void TestCurrentExceptionMessageWithInvalidBacktraceFormatter() { -#ifdef _YNDX_LIBUNWIND_ENABLE_EXCEPTION_BACKTRACE - auto invalidFormatter = [](IOutputStream*, void* const*, size_t) { - Throw2DontMove(); - }; - SetFormatBackTraceFn(invalidFormatter); - - try { - Throw1DontMove(); - UNIT_ASSERT(false); - } catch (...) { - TString expected = "Failed to print backtrace: (yexception) " - "util/generic/yexception_ut.cpp:8: 1 qw 12.1\n" - "(yexception) util/generic/yexception_ut.cpp:4: blabla"; - UNIT_ASSERT_EQUAL(CurrentExceptionMessage(), expected); - } - try { - throw std::logic_error("std exception"); - UNIT_ASSERT(false); - } catch (...) { - TString expected = "Failed to print backtrace: (yexception) " - "util/generic/yexception_ut.cpp:8: 1 qw 12.1\n" - "(std::logic_error) std exception"; - UNIT_ASSERT_EQUAL(CurrentExceptionMessage(), expected); - } -#endif - } - inline void TestVirtualInheritance() { TStringStream ss; |