File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
http://aspose.com/file-tools
The moose likes Programmer Certification (SCJP/OCPJP) and the fly likes Exception Question Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Soft Skills this week in the Jobs Discussion forum!
JavaRanch » Java Forums » Certification » Programmer Certification (SCJP/OCPJP)
Bookmark "Exception Question" Watch "Exception Question" New topic
Author

Exception Question

Bin Zhao
Ranch Hand

Joined: Oct 04, 2000
Posts: 73
Consider the following code:
public class MQ1
{
public static void main(String args[])
{
System.out.println("Before Try");
try
{
}
catch(java.io.IOException t) //1
//catch(Exception t) //2
{
System.out.println("Inside Catch");
}
System.out.println("At the End");
}
}
As //1 showed,this code won't compile with error that no IOException is thrown in try block.
But if //1 is replaced with //2
it compiles without problem.
I can not understand what is behind this.
Please clear it for me
THX
Santhosh Kumar
Ranch Hand

Joined: Nov 07, 2000
Posts: 242
I think you can catch unchecked exception without even throwing in the try block, but there must be some code that throws Checked exception to catch checked exception. Pl correct me if I'm wrong.
Santhosh.
Suresh Selvaraj
Ranch Hand

Joined: Nov 14, 2000
Posts: 104
Hi,
The Exceptions that are declared in a try-catch() block should be of type, java.lang.Exception or java.lang.Throwable or java.lang.Error.
Exception hierarchy:
java.lang.Object
|
+--java.lang.Throwable
|
+--java.lang.Exception
|
+--java.io.IOException
Direct Known Subclasses:
Ex: java.io.EOFException
As you can see java.io.IOException extends java.lang.Exception.
Hence your try-catch() block should be declared to catch exceptions of type Exception/Throwable.
java.io.IOException can be defined in a try-catch() block only if subclasses of java.io.IOException are thrown.
Example:
public class MQ1
{
public static void main(String args[])
{
System.out.println("Before Try");
try
{
throw new java.io.EOFException();
}
catch(java.io.IOException e1) //1
{
System.out.println("Inside IOException");
}
catch(Exception e2) //2
{
System.out.println("Inside Exception");
}

catch(Throwable e3) //2
{
System.out.println("Inside Throwable");
}
System.out.println("At the End");
}
}
The Output of the above code is:
Before Try
Inside IOException
At the End
- Suresh Selvaraj


Suresh Selvaraj, (author of JQuiz)<br />SCJP2<br /><a href="http://www.decontconsulting.com" target="_blank" rel="nofollow">www.decontconsulting.com</a>
john noronha
Greenhorn

Joined: Nov 23, 2000
Posts: 1
I think the answer lies in the fact that while 'Exception' is generic and could be anything (including exceptions like RuntimeException ?), 'IOException' applies to IO related exceptions specifically ? ... just a guess .. would be interested to know for sure

John
Originally posted by Bin Zhao:
Consider the following code:
public class MQ1
{
public static void main(String args[])
{
System.out.println("Before Try");
try
{
}
catch(java.io.IOException t) //1
//catch(Exception t) //2
{
System.out.println("Inside Catch");
}
System.out.println("At the End");
}
}
As //1 showed,this code won't compile with error that no IOException is thrown in try block.
But if //1 is replaced with //2
it compiles without problem.
I can not understand what is behind this.
Please clear it for me
THX

 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Exception Question