That really depends on the target environment. For instance, the standard
exception wordlist doesn't know of exception classes, eg warning-alarm-failure,
and pertaining different exception handling routines. In a real world
application you will rather soon stumble over such things.
"Argument out of allowed range" could be an application exception, to be handled
by retrying an input routine.
"Missing opcode" is an internal VM exception, resulting in a core dump.
"User interrupt" could lead to a warm start.
"Timer overflow" in a multitasker could 'ring a bell'.
And so on...
To start with:
1) implement a catch/throw mechanism already in the VM
2) list all your possible exceptions and categorize them into severity classes
3) prepare the VM to handle different exception handlers
We know that the old Forth wisdom comes with "crash early".
But this is only a poor excuse for poor engineering.