Skip to main content

Exception Propagation and throw-throws keyword


Exception Propagation:
Sending exception from one method to another method is called exception propagation
Here propagation is nothing but sending.

So guys what is the situation when we are going to implement this propagation concept?
Answer to this question is when we throw an exception, if it is not caught in that method it is propagated to another method and interesting thing is that we don’t need to do anything in this process we just need to throw an exception that’s it.
Rule:
If the propagated exception is checked exception then not only current method developer but also method’s caller method developer should caught or report that checked exception else it leads to same compiler exception….CE: Unreported Exception
So according to that basic rule is “If checked exception is raised the method either directly by using throw keyword or indirectly by a method call it must be caught or reported.

void m1() throws ClassNotFoundException{
throw new ClassNotFoundException();  // direct raising
}
void m2(){
                m1();     // Indirect raising
}
Output: Compiler Error

void m3() throws ClassNotFoundException{
m1();                     //indirect raising
}
Output: Compiled successfully.



Differences between throw and throws keyword
throw
throws
It is used to raise and throw exception manually or explicitly by developer
It is used to report that exception to this method caller
throw should follow exception object
throws should follow exception class name
It can raise and throw only one exception at a time
It can report multiple exceptions those raising or throwing from current method with “,” separator
It is appeared or used only in a method logic
It is appeared or used only in method prototype after method signature


Rules:
1.       After throw and throws keyword only Throwable type class object and name is allowed. If we pass non-throwable object it leads to CE: incompatible types exception.
2.       If we interchange these keywords places it leads to CE: illegal start of expression
e.g.
void method1(){
                throw  “abc”;
}
Output: CE: Incompatible Types

void method2() throws Integer{

}
Output: Incompatible Types

void method3(){
                throws new Exception();
}
Output: CE: Illegal start of Expression


Rule on throw keyword:

After throw statement we are not allowed to place any java statement directly, it leads to CE: Unreachable statement because “throw” keyword transfers the flow of execution and gives output as exception. So if we write any code after throw statement it is obviously doesn’t make any sense.

e.g.:
void method1(){
                System.out.println(“Hello”);
throw new ArithmeticException();
System.out.println(“Hi”);
}
Output: CE: Unreachable Statement

So If needed how can we place statement after throw keyword?
We must place throw keyword in if condition
e.g.
void method1( int a ){
                System.out.println(“Hi);
If(a == 10){
                                Throw new ArithmeticException();
}
System.out.println(“Input Value=”+a);
}

Thank You….!!!

Comments

Popular posts from this blog

Restful API for Beginners

Introduction: Everyone is saying Rest API. Sometimes people say  only API to rest apis.RESTful API is for accessing blah blah service or to do blah blah functionality. In corporate world, fresher get confused when seniors give them task to create new api to call blah blah service or to do blah blah functionality. So what is this REST API? REST (REpresentational State Transfer) is an architectural style, and an approach to communications.Using this REST whatever functionality we create known as REST API. We can implement  rest-api using various providers but usually people use Jersey and Spring . As per my choice personally I would like to use jersey which keep code neat and clean. Rest follows client-server architecture with Front Controller Design Pattern. It completely depends on http protocol .REST implementation is very easy and run in  less memory compared to SOAP. Rest Support following parameter techniques to pass input for our web service...

Apache Solr Search Framework

Introduction: SOLR stands for Searching On Lucene with Replication . Its main functionalities are indexing and searching. Solr is an open source enterprise search server/ web application Created by Yonik Seeley in 2004. In 2012 4.0 version with Cloud support. Solr uses lucene search library and extends it. Solr exposes lucene Java API's as RESTful services. Terminology: Solr Instance: In Apache Solr, a Solr Instance is an instance a Solr running in the JVM. In Standalone mode, Solr contains only one instance. Solr Core: In Apache Solr, a Solr Core is also known as simply “Core”. In other words, a Solr Core = an instance of Apache Lucene Index + Solr Configuratio. Indexing: In Apache Lucene or Solr, Indexing is a technique of adding Document’s content to Solr Index so that we can search them easily. Apache Solr uses Apache Lucene Inverted Index technique to Index it’s documents. That’s why Solr provides very fast searching feature. Document: Solr...