Yes.
try
and catch
WorkHere is how
try
andcatch
work:
- When an
Exception
is thrown by a statement in thetry
block, thecatch
blocks are examined one-by-one starting starting with the first.- The first
catch
block to match the type of theException
gets control.
- In the diagram, X, Y, and Z represent different classes of exceptions.
- For example, Y might be
IOException
.- A
catch
block matches exceptions of the named class and all subclasses- If Y is
IOException
, it also matchesFileNotFoundException
, a subclass.- Only one
catch
block gets control.- If no
catch
block matches theException
, none is picked, and execution leaves this method (just as if there were notry
block.)- The most specific
Exception
classes should appear first in the structure, followed by the more generalException
classes.
- If the general class came first, it would be the first match for all its subclasses.
- The statements in the chosen
catch
block execute sequentially. After the last statement executes, control goes to the first statement that follows thetry/catch
structure.
- (A
finally
block can be added to the structure, which will always be executed.)- (This explained below.)
- Control does not return to the
try
block.
Must the catch
blocks list all possible Exception
s?