gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-11-01 09:35:17 27 4
gpt4 key购买 nike

我尝试更改我的 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() 返回:org.XXX.android.dto.core.ServiceException

所以这不是帮助,因为它是异常(exception)而不是原因

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

是我需要的更多,但我只需要这个字符串的最后一部分,如下所示:网络无法访问或另一个唯一的 Reason 标识符。

提前致谢,祝您有美好的一天:)

最佳答案

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

我认为 org.XXX.android.dto.core.ServiceException 过于宽泛。您可能有 UnreachableNetworkExceptionConnectionRefusedException

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

当您创建一个 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";
}

关于java - 获取异常原因的唯一标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43799947/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com