Exceptions and IO Dr. Andrew Wallace PhD BEng(hons) EurIng
Overview Problems Handling problems Input / output Streams
Problems What can go wrong? Boundaries Problems User inputs Memory limits Resource limits Impossible maths IO errors
Problems User inputs public class ParseException extends Exception public class DataFormatException extends Exception
Problems Memory limits public class ArrayIndexOutOfBoundsException public class NullPointerException public class OutOfMemoryError
Problems Resource limits public class FileSystemNotFoundException Public class RunTimeErrorException
Problems Impossible maths public class ArithmeticException
Problems IO errors public class FileNotFoundException public UnknownHostException
Quiz Name five problems that can occur in any java program How does Java handle the problems?
Handling problems Two types of problem handling classes Checked Anticipate and recover Try / catch block Method throws Unchecked No special handling Errors in the machine or run time errors *
Handling problems Object Throwable ErrorException RuntimeException unchecked checked
Handling problems Create your own exceptions Create a subclass of one of the Java defined classes public class EndOfTheWorldException extends Exception Add information on the error Parameter to the constructor Use the “throw” key word to throw your exception if(bError) { throw new EndOfTheWorldException(); } public void func() throws Exception
Handling problems Example try { … } catch(IOException e) { … } catch(Exception e) { … } finally { … }
Handling problems Try with resources BufferedReader br = new BufferedReader(new FileReader(path)); try { try (BufferedReader br = new BufferedReader(new FileReader(path))) { Throwable.getSuppressed
Quiz What does checked and uncheck mean in regards to java exceptions? How do you create you own exceptions?
Input / Output Communicate with the outside world Java allows many ways to get data in a send data out GUI (graphic inputs / outputs) Keyboard / screen Database input / output File input / output
Input / Output
File IO is an abstraction “File” is the data Place to read and write to is a “stream”
Input / Output Java IO package Standard streams System.in- keyboard- InputStream System.out- console- PrintStream System.err- console- PrintStream Redirect System.setIn (Out) (Err) *
Input / Output Java InputStream is abstract System.in is a specific implementation Read strings Read numbers Reads in a whole line Use Scanner to break up the string
Input / Output Scanner class Breaks up a sting into “tokens” Uses a delimiter (like space, for example) Use next functions to get data out Use has functions to check for more tokens
Input / Output Scanner sc = new Scanner(System.in); String strMsg; while(sc.hasNext()) { strMsg = sc.next(); … }
Input / Output File Save data Exists between program runs Text file Simple and readable with other programs
Input / Output The File class Represents information on the file Path Director File attributes (hidden, is it readable? Does it exists?) System independent
Quiz What is a stream in java IO? What is a file in java IO?
Input / Output Class Reader and Class Writer Java super classes Read and write text (char) Open a file Read or write to a file Close a file
Input / Output try { FileReader fInput = new FileReader(“inputfile.txt”); FileWriter fOutput = new FileWriter(“outputfile.txt); nChar = fInput.read(); fOutput.write(nChar); } catch( …) { … } finally { if(fInput != null) fInput.close(); if(fOutput != null) fOutput.close(); }
Input / Output Open a file File object FileDescriptor String (file name) FileWriter allow you to append text as well Close
Input / Output Read char as int Read an array of char Write a char as int Write an array of char Write a string flush *
Input / Output More advanced IO Connect writer to another class PrintWriter(new FileWriter(“file.txt”)); println methods for all basic java objects No exceptions - checkError()
Input / Output BufferedReader new BufferedREader(new FileReader(“file.txt”)) String readLine(); Scanner Scanner fIn = new Scanner(new File(“file.txt”)); Scanner fIn = new Scanner(new FileReader(“file.txt”));
Streams Character Input Character Output Byte Output Byte Input Byte Output Data streams Processing streams
Streams Data Streams character Unicode Reader FileReader int read methods Char arrays
Streams Data Streams Byte 8 bit data InputStream FileInputStream int read() Byte arrays
Streams Data Streams Character Writer FileWriter Byte OutputStream FileOutputStream int write void write
Streams Processing Streams Character BufferedReader BufferedWriter InputStreamReader LineNumberReader Byte ObjectInputStream (output) ZipInputStream (output)
Quiz What are the two types of steams in java? What are the basic data types used?
Questions?