Its always better to handle an exception in java program.Exception
will interrupt the program flow and affect robustness of program.Once
exception occurs it will stop the further execution. So better handle
exception and dont scared users by not handling exceptions:p Please go
through below for exceptions and also refer other sites too.
What is an Exception?
*************************
It’s a non functional requirement for any application, to gracefully handle any erroneous condition like resource not available, invalid input, null input, index not available and so on.Java Exception are divided into two categories as checked Exception and unchecked exception.
Checked Exception: Exception that can be identified during compile time. Basically Exception will throw compilation error.
UnChecked Exception: Exception which can't be predicted during compile time is unchecked exception. Unchecked exception is the exception which will occur during runtime.
Unchecked Exceptions mostly arise due to programming errors like accessing method of a null object, accessing element outside an array bonding or invoking method with illegal arguments. Unchecked exceptions are the direct subclass of RuntimeException.
Errors:Errors are serious runtime environment problems that are almost certainly not recoverable. Some examples are OutOfMemoryError, LinkageError, and StackOverflowError. They generally crash you program or part of program. Only a good logging practice will help you in determining the exact causes of errors.
Implementation of Exception:
******************************
Checked exceptions can be handled by throws keyword. Throws will be declared on the method. Throws will not be used inside of any method. Checked exceptions such as IOException, Sql Exception can be throwed by throws. Throws can be able to throw more than one exception at a time using comma operator. syntax are as folows.
---------------------------------------------------------------------------------------
public static void main(String[] args) throws IOException,SQLException{
// body of function
}
---------------------------------------------------------------------------------------
Unchecked exceptions can be handle by try catch block. Block of code which may throw exceptions during runtime will be declared inside try block.Try block could state that code which is there inside of me may or may not throw exception. If its standard exception such as Nullpointer exception, Indexoutofexception etc then compiler will throw an exception. If its custom exception then programmer has to throw that exception explicitly.For Example, you want to throw an exception of below age if age is less than 18.This is custom exception and not standard exception.
-------------------------------------------------------------
public void method1()
{
String[] firstName= new firstName[2] ;
int age;
// getting input of age and first name here
try{
if(age is < 18)
{
throw new outOfAgeException("Below age");
}
System.Out.println(firstName[2]);
} System.out.println(null);
}
-------------------------------------------------------------
In the above example custom exception is "below age" and standard exception is " IndexoutofException". Exception will be handled for the codes is there inside the try block.So null pointer will not be able handle but it will be thrown. Catch block will be used for handling an exceptions. More than one catch block can also be declared. If you are declaring more than one catch block for handling an exceptions then it should be in an order of specific to generic. Suppose you are declaring catch for Arrayindexoutofexception and exception. Then catch block with arrayindexbound should come first and catch block with General exception should come next.Lets see what will happen if we declared general exception first. If we declare catch block with general exception first, then all exceptions will be caught by catch block with general exception. Even arrayindexbound exception will also be caught by catch block with general exception and it cant be catch by catch block with arrayindexbound exception. Here is an Example.
------------------------------------------------
catch(arrayindexboundException arr)
{ LOGGER.error("Checkout your array index", arr);
} catch(Exception e)
{
LOGGER.error("Some information", e);
}
------------------------------------------------
Stacktrace: Stackrace is use to find root cause of an exception. Once function is called its reference will be saved in stack. If that function throws any exception then pointer of stack will go back to find the root cause of an exception.Mainly stacktrace will be useful debugging and tracing your code.
Tips for handling an Exception:
*****************************************
1) Always use Finally block if you are handling an exception. There some situations where we need to close database connection, file connection etc. Such statements can be written in finally block. Once exception is occurred, your application will be stopped abtruptly but statements which has been declared inside finally block will be executed.Code inside the finally block will be executed though exceptions are thrown or not.Always clean up after handling the exception.
2)In catch block don't do return null. In that case, exception could be swallowed and stacktrace couldn't find root cause.
-----------------------------------------
catch (NoSuchMethodException e) {
return null;
}
-----------------------------------------
3) use always standard exception so that other programmers can also understand about that exception. If you are using custom exceptions then document all exceptions in your application in javadoc
4) Don't throw any exceptions from finally block.
5)Validate user input to catch adverse conditions very early in request processing.
6)Always include all information about an exception in single log message.
-----------------------------------------
LOGGER.debug(“Using cache sector A”);
LOGGER.debug(“Using retry sector B”);
-----------------------------------------
Don’t do this.
Happy Learning !!
What is an Exception?
*************************
It’s a non functional requirement for any application, to gracefully handle any erroneous condition like resource not available, invalid input, null input, index not available and so on.Java Exception are divided into two categories as checked Exception and unchecked exception.
Checked Exception: Exception that can be identified during compile time. Basically Exception will throw compilation error.
UnChecked Exception: Exception which can't be predicted during compile time is unchecked exception. Unchecked exception is the exception which will occur during runtime.
Unchecked Exceptions mostly arise due to programming errors like accessing method of a null object, accessing element outside an array bonding or invoking method with illegal arguments. Unchecked exceptions are the direct subclass of RuntimeException.
Errors:Errors are serious runtime environment problems that are almost certainly not recoverable. Some examples are OutOfMemoryError, LinkageError, and StackOverflowError. They generally crash you program or part of program. Only a good logging practice will help you in determining the exact causes of errors.
Implementation of Exception:
******************************
Checked exceptions can be handled by throws keyword. Throws will be declared on the method. Throws will not be used inside of any method. Checked exceptions such as IOException, Sql Exception can be throwed by throws. Throws can be able to throw more than one exception at a time using comma operator. syntax are as folows.
---------------------------------------------------------------------------------------
public static void main(String[] args) throws IOException,SQLException{
// body of function
}
---------------------------------------------------------------------------------------
Unchecked exceptions can be handle by try catch block. Block of code which may throw exceptions during runtime will be declared inside try block.Try block could state that code which is there inside of me may or may not throw exception. If its standard exception such as Nullpointer exception, Indexoutofexception etc then compiler will throw an exception. If its custom exception then programmer has to throw that exception explicitly.For Example, you want to throw an exception of below age if age is less than 18.This is custom exception and not standard exception.
-------------------------------------------------------------
public void method1()
{
String[] firstName= new firstName[2] ;
int age;
// getting input of age and first name here
try{
if(age is < 18)
{
throw new outOfAgeException("Below age");
}
System.Out.println(firstName[2]);
} System.out.println(null);
}
-------------------------------------------------------------
In the above example custom exception is "below age" and standard exception is " IndexoutofException". Exception will be handled for the codes is there inside the try block.So null pointer will not be able handle but it will be thrown. Catch block will be used for handling an exceptions. More than one catch block can also be declared. If you are declaring more than one catch block for handling an exceptions then it should be in an order of specific to generic. Suppose you are declaring catch for Arrayindexoutofexception and exception. Then catch block with arrayindexbound should come first and catch block with General exception should come next.Lets see what will happen if we declared general exception first. If we declare catch block with general exception first, then all exceptions will be caught by catch block with general exception. Even arrayindexbound exception will also be caught by catch block with general exception and it cant be catch by catch block with arrayindexbound exception. Here is an Example.
------------------------------------------------
catch(arrayindexboundException arr)
{ LOGGER.error("Checkout your array index", arr);
} catch(Exception e)
{
LOGGER.error("Some information", e);
}
------------------------------------------------
Stacktrace: Stackrace is use to find root cause of an exception. Once function is called its reference will be saved in stack. If that function throws any exception then pointer of stack will go back to find the root cause of an exception.Mainly stacktrace will be useful debugging and tracing your code.
Tips for handling an Exception:
*****************************************
1) Always use Finally block if you are handling an exception. There some situations where we need to close database connection, file connection etc. Such statements can be written in finally block. Once exception is occurred, your application will be stopped abtruptly but statements which has been declared inside finally block will be executed.Code inside the finally block will be executed though exceptions are thrown or not.Always clean up after handling the exception.
2)In catch block don't do return null. In that case, exception could be swallowed and stacktrace couldn't find root cause.
-----------------------------------------
catch (NoSuchMethodException e) {
return null;
}
-----------------------------------------
3) use always standard exception so that other programmers can also understand about that exception. If you are using custom exceptions then document all exceptions in your application in javadoc
4) Don't throw any exceptions from finally block.
5)Validate user input to catch adverse conditions very early in request processing.
6)Always include all information about an exception in single log message.
-----------------------------------------
LOGGER.debug(“Using cache sector A”);
LOGGER.debug(“Using retry sector B”);
-----------------------------------------
Don’t do this.
Happy Learning !!