Difference between revisions of "Cpp Coding Standards/ERR"

From Apache OpenOffice Wiki
Jump to: navigation, search
m
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
Topic-Id: '''ERR'''
+
== Error Handling (ERR) ==
 +
''How to distinguish and use exceptions, assertions and other error cases.''
  
How to distinguish and use exceptions, assertions and other error cases.
+
===== Assert Assumptions <span id="Assert">(Assert)</span> =====
 +
Assert liberally to document internal assumptions and invariants. Don't use assertions for runtime errors.<br>
 +
Ensure that assertions don't perform side effects.<br>
 +
[[/Assert|-> Details]]
  
----
+
===== Function Safety Guarantees <span id="Safe">(Safe)</span> =====
=== Summary ===
+
Provide the strongest error-safety guarantee for each function that does not punish callers who do not need it. The basic guarantee is always necessary. [[/Safe|-> Details]]
==== Assert Assumptions <span id="Assert">(Assert)</span> ====
+
Assert liberally to document internal assumptions and invariants. Don't use assertions for runtime errors.
+
Ensure that assertions don't perform side effects.
+
  
[[/Assert|Details]]
+
===== Which Functions Never Fail <span id="NoFail">(NoFail)</span> =====
 +
Destructors, delete operators and swap functions must never fail. Occurring exceptions have to be catched and handled within the same function. [[/NoFail|-> Details]]
  
==== Function Safety Guarantees <span id="Safe">(Safe)</span> ====
+
===== Throwing and Catching Exceptions <span id="HowThrow">(HowThrow)</span> =====
Provide the strongest error-safety guarantee for each function that does not punish callers who do not need it. The basic guarantee is always necessary.
+
Throw exceptions by value, catch them by reference. [[/HowThrow|-> Details]]
  
[[/Safe|Details]]
+
===== Avoid Exception Specifications <span id="ExSpec">(ExSpec)</span> =====
 
+
Don't write exception specifications on your functions. [[/ExSpec|-> Details]]
==== Which Functions Never Fail <span id="NoFail">(NoFail)</span> ====
+
Destructors, delete operators and swap functions must never fail. Occurring exceptions have to be catched and handled within the same function.
+
 
+
[[/NoFail|Details]]
+
 
+
==== Throwing and Catching Exceptions <span id="HowThrow">(HowThrow)</span> ====
+
Throw exceptions by value, catch them by reference.
+
 
+
[[/HowThrow|Details]]
+
 
+
==== Avoid Exception Specifications <span id="ExSpec">(ExSpec)</span> ====
+
Don't write exception specifications on your functions.  
+
 
+
[[/ExSpec|Details]]
+
 
+
----
+
Related Rules
+
* [[../Principles#ErrHdl |PRINC:ErrHdl]] - Consistent Error Handling
+
  
 
----
 
----
 
[[Category:Coding Standards]]
 
[[Category:Coding Standards]]

Latest revision as of 09:05, 23 May 2007

Error Handling (ERR)

How to distinguish and use exceptions, assertions and other error cases.

Assert Assumptions (Assert)

Assert liberally to document internal assumptions and invariants. Don't use assertions for runtime errors.
Ensure that assertions don't perform side effects.
-> Details

Function Safety Guarantees (Safe)

Provide the strongest error-safety guarantee for each function that does not punish callers who do not need it. The basic guarantee is always necessary. -> Details

Which Functions Never Fail (NoFail)

Destructors, delete operators and swap functions must never fail. Occurring exceptions have to be catched and handled within the same function. -> Details

Throwing and Catching Exceptions (HowThrow)

Throw exceptions by value, catch them by reference. -> Details

Avoid Exception Specifications (ExSpec)

Don't write exception specifications on your functions. -> Details


Personal tools