All threads have active exception handling in normal operation. However, the main thread exception handler may be toggled on/off by Ctrl+Shift+! and the exception handlers for all other threads may be toggled on/off by Ctrl+Shift+@.
Thread Data
An array of thread data structures is maintained throughout a session. The data includes a name for each thread. In normal static conditions, FS/2 has six full time threads named thusly:
Main Thread

Main Thread Exception
An exception in the main thread (thread 1) will always be fatal to the process. It may or may not trigger the appearance of a message box announcement of the exception, depending on the ability of PM to display the message box. The main thread exception handler is registered (activated) immediately prior to creating the main window. It is possible that an exception may occur before the handler is activated, in which case an exception will not be caught and there will be no logged data for the exception. After the main thread exception handler is registered, any main thread exception should produce an entry in the fs_except.log and the fs_debug.log files. In most cases, a fs_dump.log will also contain a dump of useful debug data. These log files will be created in the FS/2 directory.
The main thread exception handler may be toggled off/on by use of Ctrl+Shift+~(tilde). A message in the Message window reports the current state.
A main thread (thread 1) exception handler test may be triggered by the key combination Ctrl+Alt+Shift+~ pressed two times in succession. The exception is immediate and will terminate the application.
All Other Threads

Other
Thread Exceptions
An exception in any thread other than the main thread may or may not be fatal to the process. It will terminate the thread in which the exception occurred and any function the thread was performing. If the thread is one of the five base full time threads, an attempt will be made to restart the thread after termination. If successful, it is likely that normal operation on the program will not be affected. However, it is recommended that the program be closed and restarted if further operation does not appear normal. Any thread exception should produce an entry in the fs_except.log and the fs_debug.log. In most cases where the exception closes the application, a fs_dump.log will also be created or appended to. This file contains a dump of useful debug data. These log files will be created in the FS/2 directory.
The exception handler for all threads other than the main thread may be toggled off/on by use of Ctrl+Shift+!(exclamation). A message in the Message window reports the current state.
An exception handler test for a thread other than an object window thread may be triggered by the key combination Ctrl+Alt+Shift+! pressed two times in succession. Then change the focus to the inactive Files window to trigger the exception. Such an exception should self-recover and not terminate the application.
An exception handler test for an object window may be triggered by the key combination Ctrl+Alt+Shift+@ pressed two times in succession. Then change the focus to the inactive Files window to trigger the exception. Such an exception should self-recover and not terminate the application.
After five self-recovering exceptions, the program will terminate on the sixth such exception.
Normal Thread Usage
In static conditions, there will be six threads running as noted above. The typical 'maximum' numbers of threads normally used will be 12 to 15, generally seen in the startup phase. The maximum number of threads is limited to 24. Any call to start more than 24 threads will fail with a warning message.
There are more than one hundred instances in FS/2 where a named thread is started to perform a function.
A visual 'vertical tape' threads display is optionally available to graphically display the number of running threads. See Threads Display.