Allow me to butt in on this discussion.

abachler: you're wrong
bithub: you probably should research more about exceptions

You are each coming at this from a different perspective.

bithub: abachler is coming at this from the perspective of what an exception really is. Originally, exceptions were generated by hardware when something happened that needed to be handled. This could be an I/O request, and system call, a divide-by-zero, or several other things. Recently, programming languages have expanded the definition of "exception" to include many other things. You are working off of the expanded definition of an exception, while abachler is working off of the original definition. (Hence all of his links to the Intel architecture manuals)

abachler: you're wrong. Properly written code will generate exceptions. Just not bad exceptions Like I said above: I/O requests, system calls, and page faults (maybe the most common exception of them all) are all hardware exceptions. Of course, there are others which hopefully should not be called by correctly written code, but you never know (integer overflow, floating point error...although these exceptions might be caused purposely by the programmer). Other exceptions we can't control by code at all: hardware malfunction exceptions.