Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| c_exceptions [2018/02/01 17:22] – rpjday | c_exceptions [2018/02/02 11:02] (current) – [Guarantees] rpjday | ||
|---|---|---|---|
| Line 8: | Line 8: | ||
| * [[http:// | * [[http:// | ||
| * [[http:// | * [[http:// | ||
| + | * [[http:// | ||
| * [[http:// | * [[http:// | ||
| + | |||
| + | ===== Error handling possibilities ===== | ||
| + | |||
| + | * Terminate the program. | ||
| + | * Return an error value. | ||
| + | * Return a legal value and leave the program in an "error state" ('' | ||
| + | * Call an error-handler routine. | ||
| + | |||
| + | ===== Guarantees ===== | ||
| + | |||
| + | C++ standard library provides one of the following guarantees for every library operation: | ||
| + | |||
| + | * //basic// for all operations: The basic invariants of all objects are maintained, and no resources, such as memory, are leaked. In particular, the basic invariants of every built-in and standard-library type guarantee that //you can destroy an object or assign to it after every standard-library operation// (§iso.17.6.3.1). | ||
| + | * //strong// for key operations: in addition to providing the basic guarantee, either the operation succeeds, or it has no effect. This guarantee is provided for key operations, such as '' | ||
| + | * //nothrow// for some operations: in addition to providing the basic guarantee, some operations are guaranteed not to throw an exception. This guarantee is provided for a few simple operations, such as '' | ||
| + | |||