代码之家  ›  专栏  ›  技术社区  ›  Casebash

JavaME中异常原因的替代

  •  0
  • Casebash  · 技术社区  · 14 年前

    在JavaSE中,可以使用异常设置原因。 initCause 避免在捕获和重新引发异常时丢失有关错误的信息。在Java ME中也可以这样做吗?

    1 回复  |  直到 14 年前
        1
  •  0
  •   Casebash    14 年前

    很容易扩展异常类来实现这一点:

    public class OperationFailedException extends Exception{
        public Exception cause;
        public OperationFailedException(String string, Exception ex) {
            super(string);
            cause=ex;
        }
    
        public void printStackTrace(){
            super.printStackTrace();
            System.err.println("\nCaused by:\n");
            cause.printStackTrace();
        }
    }
    

    此异常对于隐藏基础异常非常有用,例如当我们希望避免依赖关系时,或者当我们希望避免强制调用者处理过多类型的异常时。我通常还创建一个扩展类的版本 RuntimeException 用于包装要取消选中的异常