\documentclass{article}
\usepackage[utf8]{inputenc}
%programming code package
\usepackage{listings}
\usepackage{color}
\definecolor{dkgreen}{rgb}{0,0.6,0}
\definecolor{gray}{rgb}{0.5,0.5,0.5}
\definecolor{mauve}{rgb}{0.58,0,0.82}
\lstset{frame=tb,
  language=Java,
  aboveskip=3mm,
  belowskip=3mm,
  showstringspaces=false,
  columns=flexible,
  basicstyle={\small\ttfamily},
  numbers=none,
  numberstyle=\tiny\color{gray},
  keywordstyle=\color{blue},
  commentstyle=\color{dkgreen},
  stringstyle=\color{mauve},
  breaklines=true,
  breakatwhitespace=true,
  tabsize=3
}
\title{Java Exception}
\author{bsse1004 }
\date{February 2019}
\begin{document}
\maketitle
\section{Example of Checked Exception}
\begin{itemize}
    \item IOException : It is thrown when an input-output operation failed or interrupted .IOExceptions are thrown when there is any input / output file operation issues while application performing certain tasks accessing the files. IOException is a checked exception.
    
    \begin{itemize}
    \begin{lstlisting}
    static ArrayList<BufferedImage> getFrames(File gif) throws IOException {
    ArrayList<BufferedImage> frames = new ArrayList<BufferedImage>();
    ImageReader ir = new GIFImageReader(new GIFImageReaderSpi());
    ir.setInput(ImageIO.createImageInputStream(gif));
    for (int i = 0; i < ir.getNumImages(true); i++) {
        frames.add(ir.read(i));
    }
    // Release resources for Garbage Collection
    ir.dispose();
    return frames;
}
    \end{lstlisting}
    \end{itemize}
    \item FileNotFoundException : This Exception is raised when a file is not accessible or does not open.
    
    \begin{itemize}
    \item example :
    \begin{lstlisting}
   //Java program to demonstrate FileNotFoundException 
import java.io.File; 
import java.io.FileNotFoundException; 
import java.io.FileReader; 
 class File_notFound_Demo { 
  
    public static void main(String args[])  { 
        try { 
  
            // Following file does not exist 
            File file = new File("E://file.txt"); 
  
            FileReader fr = new FileReader(file); 
        } catch (FileNotFoundException e) { 
           System.out.println("File does not exist"); 
        } 
    } 
} 
    \end{lstlisting}
     \end{itemize}
    
    \item NoSuchFieldException : It is thrown when a class does not contain the field (or variable) specified.
    
    
    \item ClassNotFoundException :This Exception is raised when we try to access a class whose definition is not found
    
    \item NoSearchMethodException : It is thrown when accessing a method which is not found.
\end{itemize}
\section{Example of Unchecked Exception}
\begin{itemize}
\item ArrayIndexOutOfBoundsException : It is thrown to indicate that an array has been accessed with an illegal index. The index is either negative or greater than or equal to the size of the array.
\begin{itemize}
    \item Example :
    \begin{lstlisting}
    // Java program to demonstrate ArrayIndexOutOfBoundException 
class ArrayIndexOutOfBound_Demo 
{ 
    public static void main(String args[]) 
    { 
        try{ 
            int a[] = new int[5]; 
            a[6] = 9; // accessing 7th element in an array of 
                      // size 5 
        } 
        catch(ArrayIndexOutOfBoundsException e){ 
            System.out.println ("Array Index is Out Of Bounds"); 
        } 
    } 
} 
    \end{lstlisting}
\end{itemize}
\item Arithmetic Exception : It is thrown when an exceptional condition has occurred in an arithmetic operation.
    \begin{itemize}
        \item Example
        \begin{lstlisting}
        // Java program to demonstrate ArithmeticException 
class ArithmeticException_Demo 
{ 
    public static void main(String args[]) 
    { 
        try { 
            int a = 30, b = 0; 
            int c = a/b;  // cannot divide by zero 
            System.out.println ("Result = " + c); 
        } 
        catch(ArithmeticException e) { 
            System.out.println ("Can't divide a number by 0"); 
        } 
    } 
}
        \end{lstlisting}
    \end{itemize}
\item IllegalArgumentException : IllegalArgumentException is intended to be used anytime a method is called with any argument(s) that is improper, for whatever reason.
\item StringIndexOutOfBoundsException : It is thrown by String class methods to indicate that an index is either negative than the size of the string
    \begin{itemize}
        \item Example:
        \begin{lstlisting}
        
        
// Java program to demonstrate StringIndexOutOfBoundsException 
class StringIndexOutOfBound_Demo 
{ 
    public static void main(String args[]) 
    { 
        try { 
            String a = "This is like chipping "; // length is 22 
            char c = a.charAt(24); // accessing 25th element 
            System.out.println(c); 
        } 
        catch(StringIndexOutOfBoundsException e) { 
            System.out.println("StringIndexOutOfBoundsException"); 
        } 
    } 
} 
        
        \end{lstlisting}
    \end{itemize}
\item NullPointerException : This exception is raised when referring to the members of a null object. Null represents nothing
\begin{itemize}
    \item Example
    \begin{lstlisting}
    //Java program to demonstrate NullPointerException 
class NullPointer_Demo 
{ 
    public static void main(String args[]) 
    { 
        try { 
            String a = null; //null value 
            System.out.println(a.charAt(0)); 
        } catch(NullPointerException e) { 
            System.out.println("NullPointerException.."); 
        } 
    } 
} 
    \end{lstlisting}
\end{itemize}
\item NumberFormatException : This exception is raised when a method could not convert a string into a numeric format.
\begin{itemize}
    \item Example
    \begin{lstlisting}
    // Java program to demonstrate NumberFormatException 
class  NumberFormat_Demo 
{ 
    public static void main(String args[]) 
    { 
        try { 
            // "akki" is not a number 
            int num = Integer.parseInt ("akki") ; 
  
            System.out.println(num); 
        } catch(NumberFormatException e) { 
            System.out.println("Number format exception"); 
        } 
    } 
} 
    \end{lstlisting}
\end{itemize}
\item AssertionError : the AssertionError in Java is thrown when an assert statement fails (i.e. the result is false).
\item ExceptionInInitializerError :ExceptionInInitializerError, which is thrown when an error occurs within the static initializer of a class or object. Since an ExceptionInInitializerError isn’t ever the cause of a thrown error, catching such an exception provides an underlying causal exception that indicates what the actual source of the issue was.
\item StackOverflowError : The StackOverflowError in Java occurs when the application performs excessively deep recursion. However, what exactly qualifies as “excessively deep” depends on many factors.
\item NoClassDefFoundError : In most cases, a java.lang.NoClassDefFoundError is thrown when a class reference was available during compile time, but has since disappeared (for whatever reason) during execution.
\end{itemize}
\end{document}