• 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 Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Ron McLeod
  • Rob Spoor
  • Tim Cooke
  • Junilu Lacar
Sheriffs:
  • Henry Wong
  • Liutauras Vilda
  • Jeanne Boyarsky
Saloon Keepers:
  • Jesse Silverman
  • Tim Holloway
  • Stephan van Hulst
  • Tim Moores
  • Carey Brown
Bartenders:
  • Al Hobbs
  • Mikalai Zaikin
  • Piet Souris

try without catch

 
Ranch Hand
Posts: 104
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator


I am getting the below error while compiling the code, please explain:

MyCatch.java:9: unreported exception java.io.FileNotFoundException; must be caught or declared to be thrown
FileInputStream f1 = new FileInputStream(f);
 
Ranch Hand
Posts: 434
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Originally posted by Manish Singhal:


I am getting the below error while compiling the code, please explain:

MyCatch.java:9: unreported exception java.io.FileNotFoundException; must be caught or declared to be thrown
FileInputStream f1 = new FileInputStream(f);




The line of code
FileInputStream f1 = new FileInputStream(f);
When you read in the API you will see that this throws an exception. If it throws an exception, the line of code must be placed in a try catch block that catches all of the exceptions.

You can also catch the biggest exception and deal with that one.

Example, for your code you could use either of the following three pieces of code...

try{
FileInputStream f1 = new FileInputStream(f);
}catch(FileNotFoundException fnfe){}
catch(IOException ioe){}


or

try{
FileInputStream f1 = new FileInputStream(f);
}catch(IOException ioe){}


or

try{
FileInputStream f1 = new FileInputStream(f);
}catch(Exception e){}

The first one is preferable

Cheers,
Rachel
 
Manish Singhal
Ranch Hand
Posts: 104
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Rachel, I agree with what you say but here would like to mention:

Question: Is the following code legal?
try {
...
} finally {
...
}
Answer: Yes, it's legal. A try statement does not have to have a catch statement if it has a finally statement. If the code in the try statement has multiple exit points and no associated catch clauses, the code in the finally statement is executed no matter how the try block is exited.

Any comments !!!
[ May 26, 2004: Message edited by: Manish Singhal ]
 
Rachel Swailes
Ranch Hand
Posts: 434
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Surely if you have code in the try bloc that is going to cause an exception to be thrown that you need a catch block to catch the exception? Maybe not to compile it but you need it from a logic point.

Even when you compiled it, it said that you were not catching the exception. And if you write code that does not throw an exception then why do you want to do it in a try finally block?
 
Sheriff
Posts: 3341
  • Likes 1
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
A try - finally block is used usually in a method that declares to throw any Checked Exceptions that can occur. in your example, if you changed the declaration of main to be:
public static void main(String args[]) throws IOException
The code will compile just fine.

Typically, you use try - finally when you want to ensure some cleanup is done, even if an Exception is thrown but, do not wish to handle the Exception thrown in any way.A fair example would be SQL code
 
Rachel Swailes
Ranch Hand
Posts: 434
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Well, the way that I code at the moment is to deal with java's exceptions when they occur. Could you give me an example of when to keep throwing the exceptions would be better?
 
Manish Singhal
Ranch Hand
Posts: 104
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Carl, thanks for the clear explanation.
 
Ranch Hand
Posts: 2120
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Rachel, sometimes the information necessary to deal with the exception is not present in the object containing the method in which the exception was thrown. The exception can progress untill is caught by a method in an object that knows how to recover. Doing so you can centralize the exception handling code for a family of exceptions.
 
Don't get me started about those stupid light bulbs.
reply
    Bookmark Topic Watch Topic
  • New Topic