Be specific in throws clause

来源:互联网 发布:大华监控怎么连接网络 编辑:程序博客网 时间:2024/04/29 04:05

http://www.javapractices.com/topic/TopicAction.do?Id=27


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);    }  }} 

0 0