Comparison With Error Handling
It is worth distinguishing assertions from routine error-handling. Assertions should be used to document logically impossible situations and discover programming errors — if the impossible occurs, then something fundamental is clearly wrong. This is distinct from error handling: most error conditions are possible, although some may be extremely unlikely to occur in practice. Using assertions as a general-purpose error handling mechanism is unwise: assertions do not allow for recovery from errors; an assertion failure will normally halt the program's execution abruptly. Assertions also do not display a user-friendly error message.
Consider the following example of using an assertion to handle an error:
int *ptr = malloc(sizeof(int) * 10); assert(ptr); // use ptr ...Here, the programmer is aware that malloc
will return a NULL
pointer if memory is not allocated. This is possible: the operating system does not guarantee that every call to malloc
will succeed. If an out of memory error occurs the program will immediately abort. Without the assertion, the program would continue running until ptr was dereferenced, and possibly longer, depending on the specific hardware being used. So long as assertions are not disabled, an immediate exit is assured. But if a graceful failure is desired, the program has to handle the failure. For example, a server may have multiple clients, or may hold resources that will not be released cleanly, or it may have uncommitted changes to write to a datastore. In such cases it is better to fail a single transaction than to abort abruptly.
Read more about this topic: Assertion (computing)
Famous quotes containing the words comparison with, comparison, error and/or handling:
“In everyones youthful dreams, philosophy is still vaguely but inseparably, and with singular truth, associated with the East, nor do after years discover its local habitation in the Western world. In comparison with the philosophers of the East, we may say that modern Europe has yet given birth to none.”
—Henry David Thoreau (18171862)
“Intolerance respecting other peoples religion is toleration itself in comparison with intolerance respecting other peoples art.”
—Wallace Stevens (18791955)
“Meanwhile, if the fear of falling into error sets up a mistrust of Science, which in the absence of such scruples gets on with the work itself, and actually cognizes something, it is hard to see why we should not turn round and mistrust this very mistrust.... What calls itself fear of error reveals itself rather as fear of the truth.”
—Georg Wilhelm Friedrich Hegel (17701831)
“Many more children observe attitudes, values and ways different from or in conflict with those of their families, social networks, and institutions. Yet todays young people are no more mature or capable of handling the increased conflicting and often stimulating information they receive than were young people of the past, who received the information and had more adult control of and advice about the information they did receive.”
—James P. Comer (20th century)