Be specific in throws clause
In the throws clause of a method header, be as specific as possible. Do not group together related exceptions in a generic exception class - that would represent a loss of possibly important information.
An alternative is the exception translation practice, in which a low level exception is first translated into a higher level exception before being thrown out of the method.
Example
Here, both IOException and FileNotFoundException are
incorrectly lumped together as Exception.
import java.io.*; import java.util.*; public final class BadGenericThrow { //..elided /** * BAD: This method throws a generic Exception, instead * of FileNotFoundException and IOException. */ public void makeFile() throws Exception { //create a Serializable List List<String> quarks = new ArrayList<>(); quarks.add("up"); quarks.add("down"); quarks.add("strange"); quarks.add("charm"); quarks.add("top"); quarks.add("bottom"); //serialize the List try ( ObjectOutputStream output = new ObjectOutputStream( new FileOutputStream("quarks.ser") ) ){ output.writeObject(quarks); } } }
See Also :
Would you use this technique?