Search results
Results from the WOW.Com Content Network
C does not provide direct support to exception handling: it is the programmer's responsibility to prevent errors in the first place and test return values from the functions. In any case, a possible way to implement exception handling in standard C is to use setjmp/longjmp functions:
An exception handling mechanism allows the procedure to raise an exception [2] if this precondition is violated, [1] for example if the procedure has been called on an abnormal set of arguments. The exception handling mechanism then handles the exception. [3] The precondition, and the definition of exception, is subjective.
The implementation of exception handling in programming languages typically involves a fair amount of support from both a code generator and the runtime system accompanying a compiler. (It was the addition of exception handling to C++ that ended the useful lifetime of the original C++ compiler, Cfront. [18]) Two schemes are most common.
In a language that supports formal exception handling, a graceful exit may be the final step in the handling of an exception. In other languages graceful exits can be implemented with additional statements at the locations of possible errors.
One example is the Linux kernel's EDAC subsystem (previously known as Bluesmoke), which collects the data from error-checking-enabled components inside a computer system; besides collecting and reporting back the events related to ECC memory, it also supports other checksumming errors, including those detected on the PCI bus.
This mechanism enables the automated handling of software errors independent of the application source code and of its developers. It is a direct artifact of the runtime engine paradigm and it enables unique advantages to the software life cycle that were unavailable before.
Handling errors in this manner is considered bad practice [1] and an anti-pattern in computer programming. In languages with exception handling support, this practice is called exception swallowing. Errors and exceptions have several purposes:
They provide an elegant way of handling errors, without resorting to exception handling; when a function that may fail returns a result type, the programmer is forced to consider success or failure paths, before getting access to the expected result; this eliminates the possibility of an erroneous programmer assumption.