代码原型如下
class Myexception extends Exception {
public Myexception() {
super();
}
}class a {
public void logic() {
try {
for (int i = 0; i < 10; i++) {
if (i > 5) {
throw new Myexception();
}
}
} catch (Myexception e) {
System.out.println("弹出对话框");
} }
}class b {
public void logic() {
for (int i = 0; i < 10; i++) {
if (i > 5) {
System.out.println("弹出对话框");
}
}
}
}public class test {
public static void main(String[] args) {
a a = new a();
a.logic();
b b = new b();
b.logic();
}
}
上面的for循环只是为了说明问题,不是真的逻辑.
b类和a类的效果是一样的.
看到项目里疯狂的使用自定义异常,有什么现实意义吗.难道是为了让代码看起来酷一点?

解决方案 »

  1.   

    - -很多时候jdk封装的异常的提示并不能满足实际需要,毕竟只有那几种
      

  2.   

    能一下就看出来是哪种类型的异常
    如 IOException 和NullPointException
    虽然都是Exception。。 
      

  3.   

    http://topic.csdn.net/u/20101217/13/2db3ce3d-20c2-4d21-a877-81f3e214bba1.html?seed=1404658528&r=74882622#r_74882622
      

  4.   

    肯定多啊,要不也不会有log4j的出现
      

  5.   

    自定义异常好处显而易见:通过继承Exception或Throwable,可以增加额外的属性和方法,在上层捕捉或抛出异常同时可以得到异常的自定义属性//自定义异常
    class MyException extends Exception {
    private final static long serialVersionUID = 123456789l;
    private String errorCode;
    private String errorMessage; public MyException() {
    super();
    } public MyException(String s) {
    super(s);
    } public MyException(String errorCode, String errorMessage) {
    this.errorCode = errorCode;
    this.errorMessage = errorMessage;
    } public String getErrorCode() {
    return errorCode;
    } public void setErrorCode(String errorCode) {
    this.errorCode = errorCode;
    } public String getErrorMessage() {
    return errorMessage;
    } public void setErrorMessage(String errorMessage) {
    this.errorMessage = errorMessage;
    }}
    //包装已检查异常或运行时异常
     try {
    try {
         //do somethings 
    } catch (IOException e) {
    MyException me= new MyException("10001","io error");
    se.initCause(e);
    throw me;
    }
    } catch (MyException e) {
     String errorCode=e.getErrorCode();
     String errorMessage =e.getErrorMessage();
    }
      

  6.   

    MyException  最土的名称 仔细jdk的异常和其他开源类库的异常,如spring,hiernate
    都有自己的设计原则,大思想一致,但细小的差别还是存在的1.异常类的名称讲究见名知义,举个例子
    FileNotFoundException是IOException的子类,为什么要设计FileNotFoundException呢,
    我觉得有两个原因:
    a.文件未找到的情况较常发生
    b.为见名知义,程序可以更好的判断if instanceof FileNotFoundException2.一般一个库,或一个系统都会设计一个根异常,然后根据需要添加子异常另外提一个,c#中的异常对应到java都是RuntimeException,有时候会忘记catch,导致程序莫名down掉
      

  7.   

    在java自身提供的异常无法满足用户定义业务时出现的异常,自定义异常就有了用武之地