Re: [returning error message on abort]how to interrupt normal process
in a method
Daniel Moyne wrote:
public class ClassNameMissingException extends Exception {
public ClassNameMissingException(Indi indi,int errornumber) {
this.errornumber=errornumber;
this.indi=indi;
}
public int getErrorNumber() {
return errornumber;
}
public Indi getErrorIndi() {
return indi;
}
}
The class as shown does not contain instance variables "errornumber" (should
be spelled "errorNumber") or "indi". Hence you cannot in the constructor use,
for example,
this.indi=indi;
You need to add the instance variable:
private Indi indi;
What is class Indi? If it is a business-logic component it probably should not
be an Exception member, although there are justifications for some lightweight
objects. If it holds any resources (file handles, database connections, ...)
it must not be an Exception member.
Sometimes Exception classes do define additional elements, such as the
"SQLState" attribute of java.sql.SQLException. Note that "SQLState" is
lightweight and holds no resources.
You should re-define at least the default and String-argument Exception
constructors.
public ClassNameMissingException();
public ClassNameMissingException( String message );
lest inherited methods like "getMessage()" cause difficulty, and
define "void setIndi( Indi indi )" (assuming Indi is light enough)
and "void setErrorNumber( int en )".
(Error numbers are probably not very useful to track, since they introduce a
dependency on the external resource that maps such numbers to their meanings.
That is the trouble with "SQLState".)
You might find that you can encode everything you need in the message and will
have no need for extra attributes. An Exception should be nearly atomic,
almost immutable and quite independent.
- Lew