面试是被问到对于以前的项目中有哪些需要改进
我有感而发,因为做了一段时间维护,感觉大家的异常各自抛,有的抛了不处理问题,且没有统一的格式、内容,看日志也是一头雾水,有必要统一起来,由业务人员统一配置异常
我使用Properties来统一配置异常,修改Properties文件就可以了,当然在接口中定义异常也是不错的方法。
当然如果是web开发,读取数据用的类当然有更好地选择(javax.servlet.ServletContext的getResourceAsStream)
我在src目录下建立MyException.properties文件代码:
DimUnionValid=\u5728\u5E72\u67D0\u4E8B\u7684\u65F6\u5019\u56E0\u4E3A\u83AB\u539F\u56E0\uFF0C\u9020\u6210\u4E00\u573A\uFF0C\u7B49\u7EA7err\uFF0C\u5FC5\u987B\u6392\u67E5\uFF0Ccoder\uFF1A\u4E01\u6B63\u9F99
定义了一个异常,级别err,必须排查,责任人dzl,
读取properties文件的类PropertiesUtils.java:
public class PropertiesUtils {
static InputStream in = ClassLoader
.getSystemResourceAsStream("MyException.properties");
static Properties p = new Properties();
static {
try {
p.load(in);
} catch (IOException e) {
e.printStackTrace();
}
}
public static String getPropertyByName(String key) {
String value = p.getProperty(key);
// try {
// value = new String(value.getBytes("ISO8859-1"), "UTF-8");
// } catch (UnsupportedEncodingException e) {
// e.printStackTrace();
// }
return value;
}
}
返回值MyException.java:
public class MyException extends Exception{
public MyException(String message)
{
super(message);
}
}
好了,可以抛异常了test.java:
public class test {
public static void main(String[] args) {
try {
throw new MyException(PropertiesUtils.getPropertyByName("DimUnionValid"));
} catch (MyException e) {
e.printStackTrace();
}
}
}
这个抛了一个DimUnionValid异常,是不是看起来简单清楚多了?
当然关键是处理异常,我们有些同事开发的时候看到异常也无动于衷,认为不影响效果,这样做是不对的。