2010-04-16 66 views
0

在Java SE中,可以使用initCause来设置异常原因,以避免在捕获和重新抛出异常时丢失有关错误的信息。在Java ME中可以做到这一点吗?替代Java ME中的异常原因

回答

0

这是很容易扩展Exception类来实现这一目标:

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用于包装异常,我想取消选中