/*++ Copyright (c) Microsoft Corporation Licensed under the MIT license. Module Name: - TerminalWarnings.h Abstract: - This file contains definitions for warnings, errors and exceptions used by the Windows Terminal Author(s): - Mike Griese - August 2019 --*/ #pragma once namespace TerminalApp { // SettingsLoadWarnings are scenarios where the settings contained // information we knew was invalid, but we could recover from. enum class SettingsLoadWarnings : uint32_t { MissingDefaultProfile = 0, DuplicateProfile = 1, UnknownColorScheme = 2, InvalidBackgroundImage = 3, InvalidIcon = 4, AtLeastOneKeybindingWarning = 5, TooManyKeysForChord = 6, MissingRequiredParameter = 7, LegacyGlobalsProperty = 8, FailedToParseCommandJson = 9, WARNINGS_SIZE // IMPORTANT: This MUST be the last value in this enum. It's an unused placeholder. }; // SettingsLoadWarnings are scenarios where the settings had invalid state // that we could not recover from. enum class SettingsLoadErrors : uint32_t { NoProfiles = 0, AllProfilesHidden = 1, ERRORS_SIZE // IMPORTANT: This MUST be the last value in this enum. It's an unused placeholder. }; // This is a helper class to wrap up a SettingsLoadErrors into a proper // exception type. class SettingsException : public std::runtime_error { public: explicit SettingsException(const SettingsLoadErrors& error) : std::runtime_error{ nullptr }, _error{ error } {}; // We don't use the what() method - we want to be able to display // localizable error messages. Catchers of this exception should use // _GetErrorText (in App.cpp) to get the localized exception string. const char* what() const override { return "Exception while loading or validating Terminal settings"; }; SettingsLoadErrors Error() const noexcept { return _error; }; private: const SettingsLoadErrors _error; }; };