Software exception handling developed in Lisp in the 1960s and 1970s. This originated in LISP 1.5 (1962), where exceptions were "caught" by the codice_1 keyword, which returned codice_2 in case of an error, instead of terminating the program or entering the debugger. Error "raising" was introduced in MacLisp in the late 1960s via the codice_3 keyword. This was rapidly used not only for error raising, but for non-local control flow, and thus was augmented by two new keywords, codice_4 and codice_5 (MacLisp June 1972), reserving codice_1 and codice_3 for error handling. The cleanup behavior now generally called "finally" was introduced in NIL (New Implementation of LISP) in the mid- to late-1970s as codice_8. This was then adopted by Common Lisp. Contemporary with this was codice_9 in Scheme, which handled exceptions in closures. The first papers on structured exception handling were and . Exception handling was subsequently widely adopted by many programming languages from the 1980s onward.