% (C) Copyright International Business Machines Corporation 23 January 
% 1990.  All Rights Reserved. 
%  
% See the file USERAGREEMENT distributed with this software for full 
% terms and conditions of use. 
% File: exception.tex
% SCCS Info: @(#)exception.tex	1.2 3/19/91

The level-15 output when an unhandled exception
occurs\footnote{technically, we should say an exception handled by an
{\tt on(others)} handler, this perhaps being the handler wrapped
around the entire program automatically by the compiler.} has the
following format:

\medskip

\hbox{\strut\hskip 1in{\tt hermi(raise\_exception) - Others handler invoked.}}
\hbox{\strut\hskip 1in{\tt{\em status\qquad name\qquad instruction/size\qquad
exception\qquad }({\em pcb-type})}}

In this display:

\begin{itemize}

\item{\em status} indicates the status of process that received the
exception: {\tt S} indicates a suspended process, which is a process
waiting for a communication event: either the process is in the middle
of a {\tt call} statement and is awaiting the return of its
callmessage, or it is executing a {\tt receive} or {\tt select}
operation and awaiting the arrival of a message at one of its enabled
inports.  {\tt R} indicates a runnable process, which is any process
that is not suspended.

\item{name} is the process's module name.

\item{instruction} is the number of the LI (special Hermes
``assembler'' format) instruction in the process that caused the
exception.

\item{\em size} is the total number of LI instructions in the process.
Use the Hermes disassembler to look at the LI code for a process (if
you dare) and determine which Hermes operation caused the exception.

\item{\em exception} is either a built-in exception, like {\tt
Disconnected} or {\tt Depletion}, or a user exception, which is always
indicated by the text ``{\tt user exception}'' and is never further
identified. 

\item{\em pcb-type} is ``{\tt Process} for processes that were
instantiated by the {\tt create of} operation, {\tt CProcess} for
C-Hermes processes, and either {\tt ProcedurePrimaryUsed}, {\tt
ProcedurePrimaryFree}, {\tt ProcedurePrimaryDead}, or {\tt
ProcedureSecondary} for processes instantiated with the {\tt procedure
of} operation.

\end{itemize}
