Win a copy of TDD for a Shopping Website LiveProject this week in the Testing forum!
  • 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
  • Paul Clapham
  • Ron McLeod
  • Jeanne Boyarsky
  • Tim Cooke
Sheriffs:
  • Liutauras Vilda
  • paul wheaton
  • Henry Wong
Saloon Keepers:
  • Tim Moores
  • Tim Holloway
  • Stephan van Hulst
  • Carey Brown
  • Frits Walraven
Bartenders:
  • Piet Souris
  • Himai Minh

Exception

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

public class AQuestion
{
public static void main(String args[])
{
System.out.println("Before Try");
try
{
}
catch(Throwable t)
{
System.out.println("Inside Catch");
}
System.out.println("At the End");
}
}

This piece of code does not give any comile time error( runs well and gives output before try At the End) whereas the following code :


public class AQuestion
{
public static void main(String args[])
{
System.out.println("Before Try");
try
{
}
catch(java.io.IOException t)
{
System.out.println("Inside Catch");
}
System.out.println("At the End");
}
}



is giving a compile time error : exception java.io.IOException is never thrown in the body of corresponding try statement.

I am not able to understand why the first code is running properly and the second is giving a compile time error ?

Thanks .
 
Sheriff
Posts: 11343
Mac Safari Java
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
My guess is that it's related to this...

https://coderanch.com/t/375599/java/java/Exception-class-special
 
Puja S
Ranch Hand
Posts: 51
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Thanks Marc.....but it's not that clear to me.
Can you please simplify the explanation
Thanks.
 
Ranch Hand
Posts: 3852
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
You can not catch a exception that will not thrown by try block ...thatswhy
catch(IOException e) will not work .... but now you will say why
catch(Exception e) work ... the reason is an empty try block my throw run time exception so it is worth ... not a compilation error ...

I just got this from previous post ... if any thing wrong then please correct myself & post reply ...
 
Puja S
Ranch Hand
Posts: 51
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Thanks Rathi ji.....It's clear to me now.
 
marc weber
Sheriff
Posts: 11343
Mac Safari Java
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Well, I'll try to elaborate on what Ernest said in the linked post.

Normally, the compiler guards against catch blocks that can never be entered. But there (apparently) comes a point where that's just not practical.

Throwable is a superclass to both Exception and Error. It's virtually impossible for the compiler to predict what type of code might throw any type of Exception -- let alone any type of Error (consider OutOfMemoryError or UnknownError). So basically, the compiler will "look the other way" and let a catch(Throwable) block pass, even if the associated try block is empty.

On the other hand, an IOException is fairly specific, so it's much more reasonable for the compiler to check for code that might generate an IOException.
 
Puja S
Ranch Hand
Posts: 51
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Thanks Marc and Rathi ji.......you guys are gr8.
 
ankur rathi
Ranch Hand
Posts: 3852
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
thanks marc from my side also ...
welcome puja ...
 
Ew. You guys are ugly with a capital UG. Here, maybe this tiny ad can help:
Free, earth friendly heat - from the CodeRanch trailboss
https://www.kickstarter.com/projects/paulwheaton/free-heat
reply
    Bookmark Topic Watch Topic
  • New Topic