Readings
Blogs: Posts and Series
- Andrii Batyiev - Size cost of C++ exception handling on embedded platform
- Chris Brumme - The Exception Model
- Joe Duffy - The Error Model - http://joeduffyblog.com/2016/02/07/the-error-model/
- Nicolas Brailovsky - C++ exceptions under the hood
- Simon Brand - Functional exceptionless error-handling with optional and expected
- "Buckaroo" - Error Handling in C++ or: Why You Should Use Eithers in Favor of Exceptions and Error-codes
- Raymond Chen - The Old New Thing
- Decoding the parameters of a thrown C++ exception (0xE06D7363)
- Decoding the parameters of a thrown C++ exception (0xE06D7363), revisited
- Can I throw a C++ exception from a structured exception?
- The sad history of the C++ throw(…) exception specifier
- If you want to terminate on an unexpected exception, then don’t sniff at every exception; just let the process terminate
- How can I handle both structured exceptions and C++ exceptions potentially coming from the same source?
- How can I turn a structured exception into a C++ exception without having to use /EHa, if I can constrain exactly where the structured exception is coming from?
- Stefan Gränitz - Series: Rich Recoverable Error Handling with llvm::Expected
- Mike Hearn - What's wrong with exceptions? Nothing.
- Shane Kirk - C++ Exceptions: The Good, The Bad, And The Ugly
- Boris Kolpackov
- Hyungjoon Koo (Kevin)
- Andrzej Krzemieński
- Akshay Kumar
- Eric Lippert
- Joseph Mansfield - Exceptions, error codes, and assertions in C++
- Modi Mo
- Edaqa Mortoray - Everything wrong with C++ exceptions
- Edaqa Mortoray - The true cost of zero cost exceptions
- Jonathan Müller
- Exceptions vs expected: Let's find a compromise
- How to handle errors in constructors without exceptions?
- Error Handling Series
- Joseph M. Newcomer - Mythology in C++: Exceptions are Expensive
- Jussi Pakkanen - Are exceptions slower than error objects
- Jason Robert Carey Patterson - Exception Handling Considered Harmful
- Theofilos Petsios - C++ Exception Handling
- Jeff Preshing - The Cost of Enabling Exception Handling
- Vittorio Romeo - Why choose sum types over exceptions?
- Patrice Roy - Exceptions in C++ and their Costs
- Herb Sutter - When and How to Use Exceptions
- Ian Lance Taylor
- Lucian Teodorescu
+ Exceptional exploration
- http://lucteo.ro/2018/03/18/exceptional-exploration-1/
- http://lucteo.ro/2018/04/21/exception-exploration-2/
- Nemanja Trifunovic - C++ Exceptions: Pros and Cons
Documentation
- Dwarf2 Exception Handler HOWTO
- Exception Handling in LLVM
- Exception Handling ABI for the ARM Architecture
- Itanium C++ ABI: Exception Handling
- Using Exceptions in GCC
Papers
- A Study of the Applicability of Existing Exception-handling Techniques to Component-based Real-time Software Technology
- A Study on the Effects of Exception Usage in Open-Source C++ Systems
- 2019 Master Thesis; Kirsten Bradley
- Source Code Analysis and Manipulation (SCAM) 2019
- Zelda - Zee Exception Length and Destination Analyzer
- C++ exception handling
- C++ Exception Handling for IA64
- Exception Handling: Issues and a Proposed Notation
- Exception-Safety in Generic Components: Lessons Learned from Specifying Exception-Safety for the C++ Standard Library
- Exceptional Kernel: Using C++ Exceptions in the Linux Kernel
- Generating Precise Error Specifications for C: A Zero Shot Learning Approach
- Interprocedural exception analysis for C++
- Low-cost Deterministic C++ Exceptions for Embedded Systems
- Model checking C++ programs with exceptions
- Optimizing away C++ exception handling
- Path-Based Function Embedding and Its Application to Error-Handling Specification Mining
- Terse Exception Messages
- The Use of C++ Exception Handling Constructs: A Comprehensive Study
- Using Off-the-Shelf Exception Support Components in C++ Verification
- Zipr++: Exceptional Binary Rewriting
Papers: Correctness
- APEx: Automated Inference of Error Specifications for C APIs
- Ares: Inferring Error Specifications through Static Analysis
- Automatically Detecting Error Handling Bugs Using Error Specifications
- Automatically Diagnosing and Repairing Error Handling Bugs in C
- Detecting Error-Handling Bugs without Error Specification Input
- Automated Software Engineering (ASE) 2019
- Zhouyang Jia, Shanshan Li, Tingting Yu, Xiangke Liao, Ji Wang, Xiaodong Liu, Yunhuai Liu
- https://doi.org/10.1109/ASE.2019.00029
- EH-Miner: Mining Error-Handling Bugs without Error Specification Input
- Effective Error-Specification Inference via Domain-Knowledge Expansion
- Fuzzing Error Handling Code in Device Drivers Based on Software Fault Injection
- Fuzzing Error Handling Code using Context-Sensitive Software Fault Injection
- Testing Error Handling Code in Device Drivers Using Characteristic Fault Injection
WG21 - C++ Standards Committee Papers
- P0157: Handling Disappointment in C++
- P0364: Report on Exception Handling Lite (Disappointment) from SG14
- P0709: Zero-overhead deterministic exceptions: Throwing values
- P1028: SG14
status_code
and standard error
object for P0709 Zero-overhead deterministic exceptions
- P1640: Error size benchmarking
- P1676: Exception Optimizations. An experiment.
- P1886: Error speed benchmarking
- P1947: C++ exceptions and alternatives
References
- C++ Core Guidelines - Error handling
- C++ Super-FAQ - Exceptions and Error Handling
- How a C++ compiler implements exception handling (Visual C++)
- Reversing Microsoft Visual C++ - Igor Skochinsky, 2006
- SG14 Mailing List - Cost of throwing a C++ exception on various compilers
StackOverflow Questions
- Are Exceptions in C++ really slow
- In what ways do C++ exceptions slow down code when there are no exceptions thrown?
Warnings
Software
Benchmarks
- A test on binary sizes of C error codes vs C++ exceptions
- error_bench: Micro benchmarks for various error handling mechanisms
- Exception Handling Costing Test
- Test programs to determine the speed of exceptions vs error codes
- Testing real world code performance on exceptions vs error objects
- Testing the performance of C++ exceptions vs plain C error codes
Libraries
- Boost.Exception
- cpp_exception_handling_abi
- LEAF: Lightweight Error Augmentation Framework
- llvm-expected: LLVM's Rich Recoverable Error Handling as a Library
- Optional-lite, expected-lite, and optional-bare
- Outcome
tl::expected
and tl::optional
Tools
- ErrDoc
- EPEx: Error Path Exploration for Finding Error Handling Bugs
- Zelda - Zee Exception Length and Destination Analyzer
Talks
2019
- Back to Basics: Exception Handling and Exception Safety
- De-fragmenting C++: Making Exceptions and RTTI More Affordable and Usable
- Don't write exception classes, declare exception types
- Error Handling is Cancelling Operations
- Exceptions Demystified
- Internals of Exceptions
- Adam Furmanek
- "Do you know what is SEH, VEH and VCH in Windows? Or do you know why C# introduced exceptions filters or how to catch everything, even StackOverflowException?In this presentation I show internal mechanisms used by Windows for handling exceptions. We will see constructs used by C++ and C# languages, CLR instructions and machine code details of those."
- Update Conference Prague 2018 - https://www.youtube.com/watch?v=ce_db4bfzls
- NDC Sydney 2019 - https://www.youtube.com/watch?v=NUz212O79tE
- On "Exception Handling: Issues and a Proposed Notation"
- The Dawn Of A New Error
2018
- C++ Exception Handling - The gory details of an implementation
- Dealing with function failures in C++
- Deterministic Disappointment
- Ensuring Exception Safety Through Testing
- Error Handling in Libraries: A Case Study
- How Compilers Reason About Exceptions
- Unwinding the Stack: Exploring how C++ Exceptions work on Windows
- What Could Possibly Go Wrong?: A Tale of Expectations and Exceptions
2017
- A Story of One Exception
- C++ Exceptions and Stack Unwinding
- Mongrel Monads, Dirty, Dirty, Dirty
- Rethinking Exceptions
2016
- Error -- Structured Error Handling in LLVM
- Exceptional Performance
- C++Now 2016; David Stone
- "In this presentation, we will discuss exactly what effect exceptions have on the performance of an application, backed up by numbers from both benchmarks and real world applications. We will go into the details of hardware architecture and memory hierarchy to try to understand exactly why code performs the way it does."
- https://www.youtube.com/watch?v=0_FQIDEf7_Q
- The Exception Situation
2015
- Exception handling in LLVM, from Itanium to MSVC
- The Unexceptional Exceptions
2014
2012
- Compiler Internals: Exceptions and RTTI
Tags:
native
reading
Last modified 16 December 2024