Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 获取异常原因的唯一标识符_Java_Android_Exception Handling - Fatal编程技术网

Java 获取异常原因的唯一标识符

Java 获取异常原因的唯一标识符,java,android,exception-handling,Java,Android,Exception Handling,我尝试更改Android应用程序的错误输出 我想要的是这样的东西: if (e.getCode().equals("Network is unreachable")) { info = "error => " + "Lost Connection to Internet"; }else if(e.getCode().equals("Connection Refused")) { info = "error => " + "Cant Reach server"; } 我的问题是

我尝试更改Android应用程序的错误输出

我想要的是这样的东西:

if (e.getCode().equals("Network is unreachable")) {

info = "error => " + "Lost Connection to Internet";

}else if(e.getCode().equals("Connection Refused")) {

info = "error => " + "Cant Reach server";
}
我的问题是,我需要一个抛出错误的唯一标识符

e.getCode()
return:org.XXX.android.dto.core.ServiceException

因此,这不是一个帮助,因为它是例外,但不是原因

e.getMessage()
return:无法连接到/XXXX(端口XXX):连接失败:无法访问网络

我需要的更多,但我只需要字符串的最后一部分:网络不可访问 或另一个唯一原因标识符


提前感谢,祝您度过愉快的一天:)

您可以使用以下代码:

if (e.getCode().contains("Network is unreachable")) {

info = "error => " + "Lost Connection to Internet";

}else if(e.getCode().contains("Connection Refused")) {

info = "error => " + "Cant Reach server";
}

只需将等于函数更改为包含函数即可

您不应该这样做。
可以修改错误消息。 今天您返回“网络无法访问”,但明天您可以返回 任何其他消息,而不是:“网络不可访问”、“节点不可访问”等

我认为,
org.XXX.android.dto.core.ServiceException
太宽泛了。 您可能有
无法访问的网络异常
连接拒绝异常

现在,如果要减少特定异常的数量,比使用字符串消息值更好的方法是使用枚举值来指定每种类型的异常情况。

创建
ServiceException
时,可以为枚举字段赋值,以便能够在异常处理中重用它

例如:

public class ServiceException extends Exception {

    public enum Type {
        UNREACHABLE_NETWORK, CONNECTION_REFUSED;

    }

    private Type type;

    public ServiceException(String message, Exception cause, Type type) {
        super(message, cause);
        this.type = type;
    }

    public Type getType() {
        return type;
    }
}
现在,您可以通过以下方式应用异常处理:

if (e.getType() == ServiceException.Type.UNREACHABLE_NETWORK) {  
     info = "error => " + "Lost Connection to Internet";   
}
 else if(e.getType() == ServiceException.Type.CONNECTION_REFUSED) {    
     info = "error => " + "Cant Reach server";
}

很好,但我不知道这是最佳实践还是只是一种变通方法?啊,谢谢,我认为这不是最佳实践。我会尽快测试它。