Exception guarantees

From Seo Wiki - Search Engine Optimization and Programming Languages
Jump to navigationJump to search

Exception guarantees, also known as the Abrahams guarantees after David Abrahams who formalized the guidelines[1][2], are a set of contractual guidelines that class library implementors and clients use when reasoning about exception safety in C++ programs.

The rules apply to class implementations (components) in the presence of exceptions; they are as follows:

  • The strong guarantee: that the operation has either completed successfully or thrown an exception, leaving the program state exactly as it was before the operation started.
  • The basic guarantee: that the invariants of the component are preserved, and no resources are leaked. Often refered to as the weak guarantee, because following an exception the system is left in a safe but unknown state.
  • The no-throw guarantee: that the operation will not throw an exception.

Code that doesn't follow at least one of the above rules is called exception unsafe.

References

  1. {{Expansion depth limit exceeded|{{Expansion depth limit exceeded|[[{{{Expansion depth limit exceeded}}} |{{{Expansion depth limit exceeded}}}{{Expansion depth limit exceeded|, {{{Expansion depth limit exceeded}}} }}]] |{{{Expansion depth limit exceeded}}}{{Expansion depth limit exceeded|, {{{Expansion depth limit exceeded}}} }} }}{{Expansion depth limit exceeded|{{Expansion depth limit exceeded|; |{{Expansion depth limit exceeded| & |; }} }}{{Expansion depth limit exceeded|[[{{{Expansion depth limit exceeded}}} |{{{Expansion depth limit exceeded}}}{{Expansion depth limit exceeded|, {{{Expansion depth limit exceeded}}} }}]] |{{{Expansion depth limit exceeded}}}{{Expansion depth limit exceeded|, {{{Expansion depth limit exceeded}}} }} }}{{Expansion depth limit exceeded|{{Expansion depth limit exceeded|; |{{Expansion depth limit exceeded| & |; }} }}{{Expansion depth limit exceeded|[[{{{Expansion depth limit exceeded}}} |{{{Expansion depth limit exceeded}}}{{Expansion depth limit exceeded|, {{{Expansion depth limit exceeded}}} }}]] |{{{Expansion depth limit exceeded}}}{{Expansion depth limit exceeded|, {{{Expansion depth limit exceeded}}} }} }}{{Expansion depth limit exceeded| et al. }} }} }}, ed{{Expansion depth limit exceeded|s}}{{Expansion depth limit exceeded|.||.}}{{Expansion depth limit exceeded| ({{{Expansion depth limit exceeded}}}){{Expansion depth limit exceeded| [{{{Expansion depth limit exceeded}}}] }} }} }}{{Expansion depth limit exceeded|, }}{{Expansion depth limit exceeded| 1={{Expansion depth limit exceeded|{{{Expansion depth limit exceeded}}} |{{Expansion depth limit exceeded|{{{Expansion depth limit exceeded}}} |{{Expansion depth limit exceeded|{{Expansion depth limit exceeded|http://www.pubmedcentral.nih.gov/articlerender.fcgi?tool=pmcentrez&artid={{{Expansion depth limit exceeded}}} }} }} }} }} | 2={{Expansion depth limit exceeded|Expansion depth limit exceeded{{{Expansion depth limit exceeded}}}Expansion depth limit exceeded |"{{Expansion depth limit exceeded|{{Expansion depth limit exceeded| }}[{{{Expansion depth limit exceeded}}}] }}" }} }}{{Expansion depth limit exceeded|{{Expansion depth limit exceeded|, }} {{Expansion depth limit exceeded| 1={{Expansion depth limit exceeded|{{Expansion depth limit exceeded|{{Expansion depth limit exceeded|{{{Expansion depth limit exceeded}}} |{{Expansion depth limit exceeded|{{Expansion depth limit exceeded| http://www.pubmedcentral.nih.gov/articlerender.fcgi?tool=pmcentrez&artid={{{Expansion depth limit exceeded}}} }}}} }} }} |{{Expansion depth limit exceeded|{{{Expansion depth limit exceeded}}} |{{Expansion depth limit exceeded|{{Expansion depth limit exceeded| http://www.pubmedcentral.nih.gov/articlerender.fcgi?tool=pmcentrez&artid={{{Expansion depth limit exceeded}}} }}}} }} }} | 2=Expansion depth limit exceeded{{Expansion depth limit exceeded| [{{{Expansion depth limit exceeded}}}] }}Expansion depth limit exceeded }} }}{{Expansion depth limit exceeded| ({{{Expansion depth limit exceeded}}}) }}{{Expansion depth limit exceeded|, {{{Expansion depth limit exceeded}}} }}{{Expansion depth limit exceeded|, Expansion depth limit exceeded{{{Expansion depth limit exceeded}}}Expansion depth limit exceeded }}{{Expansion depth limit exceeded|, }}{{Expansion depth limit exceeded| ({{{Expansion depth limit exceeded}}} ed.) }}{{Expansion depth limit exceeded|, {{{Expansion depth limit exceeded}}} }}{{Expansion depth limit exceeded|{{Expansion depth limit exceeded|Expansion depth limit exceeded |, }} {{{Expansion depth limit exceeded}}} }}{{Expansion depth limit exceeded|, {{{Expansion depth limit exceeded}}}{{Expansion depth limit exceeded| [{{{Expansion depth limit exceeded}}}] }} }}{{Expansion depth limit exceeded|, {{{Expansion depth limit exceeded}}} }}{{Expansion depth limit exceeded|, {{Expansion depth limit exceeded|.|A|a}}rchived{{Expansion depth limit exceeded|{{Expansion depth limit exceeded| from {{Expansion depth limit exceeded||the original}}}} }}{{Expansion depth limit exceeded| on {{{Expansion depth limit exceeded}}} }}{{Expansion depth limit exceeded|. {{Expansion depth limit exceeded|If you specify |{{Expansion depth limit exceeded|archiveurl|archivedate}}=, you must {{Expansion depth limit exceeded| also specify |{{Expansion depth limit exceeded|archivedate|archiveurl}}=|first specify |url=}}}} }} }}{{Expansion depth limit exceeded||.}}<span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook{{Expansion depth limit exceeded|&rft.genre=bookitem&rft.btitle={{Expansion depth limit exceeded}}&rft.atitle={{Expansion depth limit exceeded}} |&rft.genre=book&rft.btitle={{Expansion depth limit exceeded}} }}&rfr_id=info:sid/en.wikipedia.org:Exception_guarantees"> 
  2. {{Expansion depth limit exceeded|{{Expansion depth limit exceeded|[[{{{Expansion depth limit exceeded}}} |{{{Expansion depth limit exceeded}}}{{Expansion depth limit exceeded|, {{{Expansion depth limit exceeded}}} }}]] |{{{Expansion depth limit exceeded}}}{{Expansion depth limit exceeded|, {{{Expansion depth limit exceeded}}} }} }}{{Expansion depth limit exceeded|{{Expansion depth limit exceeded|; |{{Expansion depth limit exceeded| & |; }} }}{{Expansion depth limit exceeded|[[{{{Expansion depth limit exceeded}}} |{{{Expansion depth limit exceeded}}}{{Expansion depth limit exceeded|, {{{Expansion depth limit exceeded}}} }}]] |{{{Expansion depth limit exceeded}}}{{Expansion depth limit exceeded|, {{{Expansion depth limit exceeded}}} }} }}{{Expansion depth limit exceeded|{{Expansion depth limit exceeded|; |{{Expansion depth limit exceeded| & |; }} }}{{Expansion depth limit exceeded|[[{{{Expansion depth limit exceeded}}} |{{{Expansion depth limit exceeded}}}{{Expansion depth limit exceeded|, {{{Expansion depth limit exceeded}}} }}]] |{{{Expansion depth limit exceeded}}}{{Expansion depth limit exceeded|, {{{Expansion depth limit exceeded}}} }} }}{{Expansion depth limit exceeded| et al. }} }} }}, ed{{Expansion depth limit exceeded|s}}{{Expansion depth limit exceeded|.||.}}{{Expansion depth limit exceeded| ({{{Expansion depth limit exceeded}}}){{Expansion depth limit exceeded| [{{{Expansion depth limit exceeded}}}] }} }} }}{{Expansion depth limit exceeded|, }}{{Expansion depth limit exceeded| 1={{Expansion depth limit exceeded|{{{Expansion depth limit exceeded}}} |{{Expansion depth limit exceeded|{{{Expansion depth limit exceeded}}} |{{Expansion depth limit exceeded|{{Expansion depth limit exceeded|http://www.pubmedcentral.nih.gov/articlerender.fcgi?tool=pmcentrez&artid={{{Expansion depth limit exceeded}}} }} }} }} }} | 2={{Expansion depth limit exceeded|Expansion depth limit exceeded{{{Expansion depth limit exceeded}}}Expansion depth limit exceeded |"{{Expansion depth limit exceeded|{{Expansion depth limit exceeded| }}[{{{Expansion depth limit exceeded}}}] }}" }} }}{{Expansion depth limit exceeded|{{Expansion depth limit exceeded|, }} {{Expansion depth limit exceeded| 1={{Expansion depth limit exceeded|{{Expansion depth limit exceeded|{{Expansion depth limit exceeded|{{{Expansion depth limit exceeded}}} |{{Expansion depth limit exceeded|{{Expansion depth limit exceeded| http://www.pubmedcentral.nih.gov/articlerender.fcgi?tool=pmcentrez&artid={{{Expansion depth limit exceeded}}} }}}} }} }} |{{Expansion depth limit exceeded|{{{Expansion depth limit exceeded}}} |{{Expansion depth limit exceeded|{{Expansion depth limit exceeded| http://www.pubmedcentral.nih.gov/articlerender.fcgi?tool=pmcentrez&artid={{{Expansion depth limit exceeded}}} }}}} }} }} | 2=Expansion depth limit exceeded{{Expansion depth limit exceeded| [{{{Expansion depth limit exceeded}}}] }}Expansion depth limit exceeded }} }}{{Expansion depth limit exceeded| ({{{Expansion depth limit exceeded}}}) }}{{Expansion depth limit exceeded|, {{{Expansion depth limit exceeded}}} }}{{Expansion depth limit exceeded|, Expansion depth limit exceeded{{{Expansion depth limit exceeded}}}Expansion depth limit exceeded }}{{Expansion depth limit exceeded|, }}{{Expansion depth limit exceeded| ({{{Expansion depth limit exceeded}}} ed.) }}{{Expansion depth limit exceeded|, {{{Expansion depth limit exceeded}}} }}{{Expansion depth limit exceeded|{{Expansion depth limit exceeded|Expansion depth limit exceeded |, }} {{{Expansion depth limit exceeded}}} }}{{Expansion depth limit exceeded|, {{{Expansion depth limit exceeded}}}{{Expansion depth limit exceeded| [{{{Expansion depth limit exceeded}}}] }} }}{{Expansion depth limit exceeded|, {{{Expansion depth limit exceeded}}} }}{{Expansion depth limit exceeded|, {{Expansion depth limit exceeded|.|A|a}}rchived{{Expansion depth limit exceeded|{{Expansion depth limit exceeded| from {{Expansion depth limit exceeded||the original}}}} }}{{Expansion depth limit exceeded| on {{{Expansion depth limit exceeded}}} }}{{Expansion depth limit exceeded|. {{Expansion depth limit exceeded|If you specify |{{Expansion depth limit exceeded|archiveurl|archivedate}}=, you must {{Expansion depth limit exceeded| also specify |{{Expansion depth limit exceeded|archivedate|archiveurl}}=|first specify |url=}}}} }} }}.<span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook{{Expansion depth limit exceeded|&rft.genre=bookitem&rft.btitle={{Expansion depth limit exceeded}}&rft.atitle={{Expansion depth limit exceeded}} |&rft.genre=book&rft.btitle={{Expansion depth limit exceeded}} }}&rfr_id=info:sid/en.wikipedia.org:Exception_guarantees"> 

Template:Computing-stub

If you like SEOmastering Site, you can support it by - BTC: bc1qppjcl3c2cyjazy6lepmrv3fh6ke9mxs7zpfky0 , TRC20 and more...