subclassing java.lang.Exception
is useful when you're building a piece of code that can throw different Exceptions, for example, when you open a file, you can get FileNotFoundException
or IOException
... know imagine you are downloading that from a specific URL, so you can get MalformedURLException
and so on. Imagine such scenario but with very program-specific exceptions.
Doing stuff like
try{
....
}catch(MySubclassedException1 ex){
....
}catch(MySubclassedException2 ex){
....
}catch(MySubclassedException3 ex){
....
}
Will be much more efficient and cleaner than
try{
....
}catch(Exception ex){
if(ex.getMessage().equals("Message1")){
...
}else if(ex.getMessage().equals("Message2")){
...
}else if(ex.getMessage().equals("Message3")){
...
}
}
Hope it helps.