• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Liutauras Vilda
  • Campbell Ritchie
  • Tim Cooke
  • Bear Bibeault
  • Devaka Cooray
Sheriffs:
  • Jeanne Boyarsky
  • Knute Snortum
  • Junilu Lacar
Saloon Keepers:
  • Tim Moores
  • Ganesh Patekar
  • Stephan van Hulst
  • Pete Letkeman
  • Carey Brown
Bartenders:
  • Tim Holloway
  • Ron McLeod
  • Vijitha Kumara

explain the output  RSS feed

 
Ranch Hand
Posts: 33
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
class IntegerDivideByZeroErrorException extends Exception{}

class Average {
public static void main(String args[]){
try{
printAverage(100,0);
} catch(IntegerDivideByZeroErrorException e)
{
e.printStackTrace();

System.out.println("exception handled in main!!!");

} finally{
System.out.println("finally done in main!!!");
}
}
public static void printAverage (int sum,int number)throws IntegerDivideByZeroErrorException
{
int average = computAverage(sum, number);

}
public static int computAverage (int sum,int number)throws IntegerDivideByZeroErrorException
{
System.out.println("computing average");
if(number==0){
IntegerDivideByZeroErrorException n = new IntegerDivideByZeroErrorException();
throw n;
}
return sum/number;

}
}

-------------------------------------------------------------------

the stacktrace should be printed between 'computing average' and 'exception handled in main'..... why is it getting printed at the last..irrespective of where i put the statement 'e.printStackTrace();'in the code..


compile:
run:
computing average
exception handled in main!!!
finally done in main!!!
IntegerDivideByZeroErrorException
at Average.computAverage(Average.java:26)
at Average.printAverage(Average.java:19)
at Average.main(Average.java:7)
BUILD SUCCESSFUL (total time: 0 seconds)
 
Ranch Hand
Posts: 1970
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
It's difficult to understand your program, because you did not UseCodeTags.

However, I think I can guess the problem. Your code prints its messages to System.out, but uses e.printStackTrace(). The method Throwable.printStackTrace() prints to System.err.

When output is sent to both System.out and System.err, and both those streams are connected to the console (as they are by default), you will get a random intermingling of the two streams. Therefore, stuff may not appear on the console in the order that it is output by the program.

I think changing your code to say e.printStackTrace(System.out) might fix it.
 
rahul mehra
Ranch Hand
Posts: 33
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
thanks...
 
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
Boost this thread!