File: exception

package info (click to toggle)
cppreference-doc 20170409-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, forky, sid, trixie
  • size: 259,872 kB
  • sloc: xml: 570,184; python: 1,923; php: 520; makefile: 168; sh: 25; cpp: 9; ansic: 9
file content (83 lines) | stat: -rw-r--r-- 2,408 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
/*  Copyright (C) 2015  Povilas Kanapickas <povilas@radix.lt>

    This file is part of cppreference-doc

    This work is licensed under the Creative Commons Attribution-ShareAlike 3.0
    Unported License. To view a copy of this license, visit
    http://creativecommons.org/licenses/by-sa/3.0/ or send a letter to Creative
    Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA.

    Permission is granted to copy, distribute and/or modify this document
    under the terms of the GNU Free Documentation License, Version 1.3 or
    any later version published by the Free Software Foundation; with no
    Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
*/

#ifndef CPPREFERENCE_EXCEPTION_H
#define CPPREFERENCE_EXCEPTION_H

namespace std {

class exception {
public:
    exception();
    exception(const exception& other);
    exception& operator=(const exception& other);
    virtual const char* what() const;
};

#if CPPREFERENCE_STDVER>= 2011
class nested_exception {
public:
    nested_exception();
    nested_exception(const nested_exception& other) = default;
    virtual ~nested_exception() = default;
    nested_exception& operator=(const nested_exception& other) = default;
    void rethrow_nested() const;
    std::exception_ptr nested_ptr() const;
};

#endif // CPPREFERENCE_STDVER>= 2011

class bad_exception : public exception {
public:
    bad_exception();
    bad_exception(const bad_exception& other);
    bad_exception& operator=(const bad_exception& other);
};

void unexpected();
typedef void (*unexpected_handler)();
typedef void (*terminate_handler)();

#if CPPREFERENCE_STDVER>= 2011
typedef void* exception_ptr; // actually unspecified
#endif // CPPREFERENCE_STDVER>= 2011

bool uncaught_exception();
#if CPPREFERENCE_STDVER>= 2017
int uncaught_exceptions();
#endif

#if CPPREFERENCE_STDVER>= 2011
template<class E>
std::exception_ptr make_exception_ptr(E e);
std::exception_ptr current_exception();
template<class T>
void throw_with_nested(T&& t);
template<class E>
void rethrow_if_nested(const E& e);
#endif

void terminate();
#if CPPREFERENCE_STDVER>= 2011
std::terminate_handler get_terminate();
std::unexpected_handler get_unexpected();
#endif
std::terminate_handler set_terminate(std::terminate_handler f);
std::unexpected_handler set_unexpected(std::unexpected_handler f);

} // namespace std

#endif // CPPREFERENCE_EXCEPTION_H