Exceptions and resources
Our task
TL;DR
The task description with proper repository is here.
Add your notes in comments or in README.md
.
The deadline for this task is 22.05.22 (23:59).
Tasks description
Exception classes
Implement method, that will throw random of your created 4 exceptions. Your goals:
- create own exceptions that are checked and unchecked (at least 1 unchecked)
- catch needed exceptions (separately) and show how to catch a few in single
catch
block (don’t use abstract class to catch your exception in this case) - make signature of your method to contain only 2 exception classes (remember about inheritance and the difference about checked/unchecked exceptions)
Rethrowing exceptions
Implement every step in separate file (you can copy/past most of previous steps to next ones).
Implement single method that takes a String and prints its length.
Let’s use it in main
and write your observations about:
- what happens when you pass
null
as an argument to your method - comment - what happens when you
try/catch
this exception - print its stacktrace incatch
- try to rethrow caught exception after printing - is the printed stacktrace identical to the stacktrace reported by virtual machine? - comment
- use
fillInStackTrace
method (reading its documentation from Oracle) before rethrowing this exception - comment - instead of rethrowing caught exception, throw another one of
Exception
class (take a look how the signature ofmain
must change) - comment - try to add caught exception to the new one (using proper constructor that can take an exception) - comment
Try with resources
Read tutorial and compare with this article - maybe bookmark them and leave for future to compare how to would understand them after e.g. a year of working with Java.
Implement class
public class FileInputStreamBufferedReader implements Readable, Closeable {
public FileInputStreamBufferedReader(File file) throws FileNotFoundException {
}
public String readText() throws IOException {
throw new IllegalStateException("TODO");
}
}
that will use BufferedReader
, InputStreamReader
and FileInputStream
to read from file
and will be able to read the full text file of the file and return it at once method call.
Show in main
how to use your class for reading text file in try-with-resources manner.