There are two types of exceptions, fatal and no-fatal.
Ordinal errors such as division-by-zero and overflow are fatal exceptions.
Non-fatal exceptions are raised by specific statements or functions such as INPUT, PRINT USING, USING$-functions, BREAK-statements.
A non-fatal exception can be raised only if it is contained in a when-body.
An INPUT statement has the default recovery procedure. Ordinarily an INPUT statement itself manages insufficiency or excess of data or inconsistency of data type to request re-input.
However, when an INPUT statement is written in a when-body, insufficiency or excess of data or inconsistency of data type raises an exception, and then let the control branch to the exception handler.
10 WHEN EXCEPTION IN 20 INPUT A,B$ 30 USE 40 PRINT EXTYPE 50 END WHEN
The value of EXTYPE is as follows.
8102 syntactically incorrect input reply
8103 Non-numeric datum for a numeric variable.
8002 Too few data
8003 Too many data（or extra comma on the tail）
When an INPUT statement is written in a when-body, it is recommended to use a RERTY statement as follows.
100 WHEN EXCEPTION IN 110 INPUT A 120 USE 130 SELECT CASE EXTYPE 140 CASE 8102,8103,8002,8003 150 RETRY 160 CASE ELSE 170 ! Manages other exceptions 180 END SELECT 190 END WHEN
When a PRINT USING statement or a USING$ function is written in a when-body, the following exceptions can be raised.
8203 Format-item too short
8204 Exrad overflow
If a BREAK is executed on a when-body, it merely raises an exception of extype 10007, and does not display the debug window. Therefore it is difficult to debug a when-body using a BREAK statement.
（However, using Break-Points on the debug window enables us to debug a when-body.）