http://www.codigg.com/2009/08/java-exception-code-method/今天在水木上看到一篇文章,原来自己那么多年写的代码都是如此的圡。public class T{
// 这里编译时是会报错的:unreported exception
private static final String s = intS();
private String initS() throws Exception{
return "www.codigg.com";
}
}为了解决这个问题,我通常的做法都是:public class T{
private static final String s;
static{
try{
s = initS();
}catch(Exception e){}
}
private String initS() throws Exception{
return "www.codigg.com";
}
}实际上有更优雅的做法,推荐一下:
public class T{
private static final String s = intS();
private T() throws Exception{}
private String initS() throws Exception{
return "www.codigg.com";
}
}
import java.util.Map;public class Test { public final static Map<Integer, String> HANDLE_STATUS_ID_NAME = new HashMap<Integer, String>();
static {
HANDLE_STATUS_ID_NAME.put(0, "未处理");
HANDLE_STATUS_ID_NAME.put(1, "处理中");
HANDLE_STATUS_ID_NAME.put(2, "处理完成");
HANDLE_STATUS_ID_NAME.put(3, "退回");
}
}采用双花括号初始化这种更为漂亮一点的方式:import java.util.HashMap;
import java.util.Map;public class Test { public final static Map<Integer, String> HANDLE_STATUS_ID_NAME = new HashMap<Integer, String>() {{
put(0, "未处理");
put(1, "处理中");
put(2, "处理完成");
put(3, "退回");
}};
}
public class T{
// 这里编译时是会报错的:unreported exception
private static final String s = intS();
private String initS() throws Exception{
return "www.codigg.com";
}
}有这样写的代码吗?为什么要这样写?
public class T{
private static final String s;
static{
try{
s = initS(); //这里为什么用static包围?? 么意思?
}catch(Exception e){}
}
private String initS() throws Exception{ //这里如果遇到异常是不是会抛异常?用什么捕捉?
return "www.codigg.com";
}
}
//工程名-异常不报告顶层标注,例如:
@OfficeException
private static final String s = intS();
private String initS() throws Exception{
return "www.codigg.com";
}
}
我比较实在,只写别人容易看懂的代码:public class T {
public static String initS() throws Exception {
return "www.codigg.com";
}
private static String initTemp(){
String s = null;
try {
s =initS();
} catch (Exception e) {
e.printStackTrace();
}
return s;
}
public static final String s = initTemp();
public static void main(String[] args) {
System.out.println(T.s);
}
}
1 因为是给静态变量赋值 具体情况 请参考各类基础数据
2 该方法将异常抛给调用者 即哪里调用 异常就会抛到哪里 就是说要在调用的时候 用try捕捉楼主的写法虽然蛮有意思 但是 写程序稳定更重要 个人喜欢把异常放在容易找到的位置 不过代码不错 收藏了 感谢楼主