Java 获取异常原因的唯一标识符
我尝试更改Android应用程序的错误输出 我想要的是这样的东西: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"; } 我的问题是
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";
}
很好,但我不知道这是最佳实践还是只是一种变通方法?啊,谢谢,我认为这不是最佳实践。我会尽快测试它。