In JavaLanguage, any subclass of Throwable except for subclasses of RuntimeException and Error.
The compiler enforces the throwing and catching of checked exceptions: If your method may throw a checked exception, you must declare it in the 'throws' part of the signature. If a method calls another method which throws a checked exception, the calling method must either catch the exception or declare it in its throws clause.
Further reading:
-
Does Java need Checked Exceptions? by BruceEckel
-
Exceptional Java by AlanGriffiths
-
The Trouble with Checked Exceptions - BruceEckel and BillVenners interview AndersHejlsberg
See TheProblemWithCheckedExceptions
CheckedExceptions are exceptions that you have to deal with explicitly. You either have to declare you can throw it:
public List getLines(String fileName) throws IOException {
List result = new ArrayList();
BufferedReader reader = new BufferedReader(new FileReader(fileName));
String line = null;
while ((line = reader.readLine()) != null) {
result.add(line);
},
return result;
},
or catch it and deal with it:
public List getLinesIfPossible(String fileName) {
List result = new ArrayList();
try {
BufferedReader reader = new BufferedReader(new FileReader(fileName));
String line = null;
while ((line = reader.readLine()) != null) {
result.add(line);
},
}, catch (IOException exc) {
exc.printStackTrace(); // dumb logging
},
return result;
},