Your class should extend class Exception,
or some more specific type
thereof.
Q:
If I want an
object of my class to be thrown as an exception
object, what should I
do?
A:
The class should extend from Exception
class. Or you can extend your class from some
more precise exception type
also.
Q:
If my
class already extends from some other class what
should I do if I want an instance of my class to
be thrown as an exception
object?
A:
One can not do anytihng in this
scenarion. Because Java does not allow multiple
inheritance and does not provide any exception
interface as well.
Q:
How does
an exception permeate through the
code?
A:
An unhandled exception moves up the
method stack in search of a matching When an
exception is thrown from a code which is wrapped
in a try block followed by one or more catch
blocks, a search is made for matching catch
block. If a matching type is found then that
block will be invoked. If a matching type is not
found then the exception moves up the method
stack and reaches the caller method. Same
procedure is repeated if the caller method is
included in a try catch block. This process
continues until a catch block handling the
appropriate type of exception is found. If it
does not find such a block then finally the
program terminates.
Q:
What is
the basic difference between the 2 approaches to
exception handling. 1> try catch block and
2> specifying the candidate exceptions in
the throws clause? When should you use which
approach?
A:
In the first approach as a programmer of
the method, you urself are dealing with the
exception. This is fine if you are in a best
position to decide should be done in case of an
exception. Whereas if it is not the
responsibility of the method to deal with it's
own exceptions, then do not use this approach.
In this case use the second approach. In the
second approach we are forcing the caller of the
method to catch the exceptions, that the method
is likely to throw. This is often the approach
library creators use. They list the exception in
the throws clause and we must catch them. You
will find the same approach throughout the java
libraries we use.
Q:
Is it
necessary that each try block must be followed
by a catch block?
A:
It is not necessary that each try block
must be followed by a catch block. It should be
followed by either a catch block OR a finally
block. And whatever exceptions are likely to be
thrown should be declared in the throws clause
of the method.
Q:
If I write
return at the end of the try block, will the
finally block still
execute?
A:
Yes even if you write return as the last
statement in the try block and no exception
occurs, the finally block will execute. The
finally block will execute and then the control
return.
Q:
If I write
System.exit (0); at the end of the try block,
will the finally block still
execute?
A:
No in this case the finally block will
not execute because when you say System.exit
(0); the control immediately goes out of the
program, and thus finally never
executes.