Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Bibliography and Sources

A consolidated list of references cited throughout the book, organized by topic. Where a paper or book is freely available online, the link is included. Where it is in print, you’ll have to find it.

Foundational papers and books

  • David Abrahams, “Exception-Safety in Generic Components,” Generic Programming: Proceedings of a Dagstuhl Seminar, Springer 2000. The paper that codified the three-guarantee vocabulary.
  • Bjarne Stroustrup, The Design and Evolution of C++, Addison-Wesley 1994. Especially §16 on the history of exception specifications.
  • Bjarne Stroustrup, The C++ Programming Language, 4th ed., Addison-Wesley 2013. Appendix E on standard-library exception safety.
  • Herb Sutter, Exceptional C++, Addison-Wesley 1999. The practical companion to Abrahams’s theoretical work.
  • Herb Sutter, More Exceptional C++, Addison-Wesley 2001.
  • Andrei Alexandrescu, Modern C++ Design, Addison-Wesley 2001.
  • Andrei Alexandrescu, “Generic: Change the Way You Write Exception-Safe Code — Forever,” C/C++ Users Journal, December 2000. The ScopeGuard paper.
  • Edsger Dijkstra, “Go To Statement Considered Harmful,” Communications of the ACM 11:3, March 1968.

Exception-handling internals

  • Itanium C++ ABI, “Exception Handling”: https://itanium-cxx-abi.github.io/cxx-abi/abi-eh.html
  • “Zero-cost exceptions” — see the GCC and Clang documentation on .eh_frame and .gcc_except_table.
  • Microsoft Visual C++ exception model documentation (varies by platform; x86 and x64 differ).

Common Lisp condition system

Concurrency

Smart contract reentrancy

Field-guide post-mortems

Distributed systems and sagas

  • Pat Helland, “Life beyond Distributed Transactions,” CIDR 2007.
  • Pat Helland, “Standing on Distributed Shoulders of Giants,” ACM Queue 14:2, 2016.
  • “Saga Pattern,” Microservices.io: https://microservices.io/patterns/data/saga.html
  • Hector Garcia-Molina and Kenneth Salem, “Sagas,” ACM SIGMOD 1987 — the original paper.

Tooling

Adjacent industry context

  • Anders Hejlsberg interview, “The Trouble with Checked Exceptions,” 2003: https://www.artima.com/articles/the-trouble-with-checked-exceptions
  • Effective Java, 3rd ed., Joshua Bloch, Addison-Wesley 2018. Items 49–77 (the exceptions chapter).
  • The Rust Programming Language, Steve Klabnik and Carol Nichols, chapter 9 (Error Handling).
  • Nancy Leveson, Engineering a Safer World, MIT Press 2011.
  • Linux Kernel Development, Robert Love, 3rd ed., Addison-Wesley 2010, chapter 7.

On the Risks Forum

The Risks Forum (comp.risks) is a continuous low-volume mailing list, archived at http://catless.ncl.ac.uk/Risks, that has been documenting computing-related failure modes since 1985. A great many of its entries are exception-safety bugs in disguise. Reading the archives chronologically is unsettling.