mirror of
https://github.com/catchorg/Catch2.git
synced 2025-09-18 19:05:40 +02:00
Collect startup exceptions instead of throwing them
Previously, some errors in Catch configuration would cause exceptions to be thrown before main was even entered. This leads to call to `std::terminate`, which is not a particularly nice way of ending the binary. Now these exceptions are registered with a global collector and used once Catch enters main. They can also be optionally ignored, if user supplies his own main and opts not to check them (or ignored them intentionally). Closes #921
This commit is contained in:
27
include/internal/catch_startup_exception_registry.h
Normal file
27
include/internal/catch_startup_exception_registry.h
Normal file
@@ -0,0 +1,27 @@
|
||||
/*
|
||||
* Created by Martin on 04/06/2017.
|
||||
* Copyright 2017 Two Blue Cubes Ltd. All rights reserved.
|
||||
*
|
||||
* Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
* file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
#ifndef TWOBLUECUBES_CATCH_STARTUP_EXCEPTION_REGISTRY_H_INCLUDED
|
||||
#define TWOBLUECUBES_CATCH_STARTUP_EXCEPTION_REGISTRY_H_INCLUDED
|
||||
|
||||
|
||||
#include <vector>
|
||||
#include <exception>
|
||||
|
||||
namespace Catch {
|
||||
|
||||
class StartupExceptionRegistry {
|
||||
public:
|
||||
void add(std::exception_ptr const& exception);
|
||||
std::vector<std::exception_ptr> const& getExceptions() const;
|
||||
private:
|
||||
std::vector<std::exception_ptr> m_exceptions;
|
||||
};
|
||||
|
||||
} // end namespace Catch
|
||||
|
||||
#endif // TWOBLUECUBES_CATCH_STARTUP_EXCEPTION_REGISTRY_H_INCLUDED
|
Reference in New Issue
Block a user