Re: [returning error message on abort]how to interrupt normal process in a method
Andrew Thompson wrote:
Daniel Moyne wrote:
I have a method that return an array, something like this :
public String[] getAllClassName(Indi indi) {
/**
@throws ClassNameMissingException if no class names found
*/
public String[] getAllClassName(Indi indi)
throws ClassNameMissingException {
/* check for existing classes */
....
if (classname.equals("")) {
/* here we want to abort */
println("ERROR: empty _CLAS tag
found for :"+indi); break; /* is
this good */
System.err.println(
"ERROR: empty _CLAS tag found for :"+indi);
throw new ClassNameMissingException();
}
else {
....
}
class ClassNameMissingException extends Exception {
ClassNameMissingException() {
}
}
So when everything goes well I normally get an array of string values but
in some cases I want to abort the method and return an error message ; as
a method can just return an object (?) how to proceed neatly for the
caller of the method to get either :
- the array he wants,
- or possibly a notification of an error when aborting.
// the caller 'try's something that might fail..
try {
String[] names = getAllClassName(Indi indi);
// proceed with processing the class names
// ....
} catch(ClassNameMissingException cnme) {
//decide what to do here, usually a good thing is..
cnme.printStackTrace();
}
With Java I am a little puzzled as the way to think is different.
Different to what? Another (OOP) language?
A procedural language?
Your understanding of Java at this moment?
Andrew T.
I tried this :
to initiate error in various methods :
throw new ClassNameMissingException(indi,1);
with the following class definition to instanciate an error :
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;
}
}
but :
(1) first of all no way to use "this" in the constructor ! ; maybe it is not
possible in this context ?
(2)then how and to get errornumber and indi known in methods
getErrorNumber() and getErrorIndi() if I have to provide respectively indi
and errornumber as arguments which will not help in catch section because I
cannot provide what I am looking for! :
catch(ClassNameMissingException cnme) {
//decide what to do here, usually a good thing is..
cnme.printStackTrace();
Indi ErrorIndi=ClassNameMissingException.getErrorIndi();
Int ErrorNumber=ClassNameMissingException.getErrorNumber();
}
Maybe I have to go though the cnme object to extract this information.
Sorry it looks like I am really stupid !
Daniel.