summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra/docs/clang-tidy/checks/hicpp-exception-baseclass.rst
diff options
context:
space:
mode:
Diffstat (limited to 'clang-tools-extra/docs/clang-tidy/checks/hicpp-exception-baseclass.rst')
-rw-r--r--clang-tools-extra/docs/clang-tidy/checks/hicpp-exception-baseclass.rst30
1 files changed, 30 insertions, 0 deletions
diff --git a/clang-tools-extra/docs/clang-tidy/checks/hicpp-exception-baseclass.rst b/clang-tools-extra/docs/clang-tidy/checks/hicpp-exception-baseclass.rst
new file mode 100644
index 00000000000..42563aeaee3
--- /dev/null
+++ b/clang-tools-extra/docs/clang-tidy/checks/hicpp-exception-baseclass.rst
@@ -0,0 +1,30 @@
+.. title:: clang-tidy - hicpp-exception-baseclass
+
+hicpp-exception-baseclass
+=========================
+
+Ensure that every value that in a ``throw`` expression is an instance of
+``std::exception``.
+
+This enforces `rule 15.1 <http://www.codingstandard.com/section/15-1-throwing-an-exception/>`_
+of the High Integrity C++ Coding Standard.
+
+.. code-block:: c++
+
+ class custom_exception {};
+
+ void throwing() noexcept(false) {
+ // Problematic throw expressions.
+ throw int(42);
+ throw custom_exception();
+ }
+
+ class mathematical_error : public std::exception {};
+
+ void throwing2() noexcept(false) {
+ // These kind of throws are ok.
+ throw mathematical_error();
+ throw std::runtime_error();
+ throw std::exception();
+ }
+
OpenPOWER on IntegriCloud