java - 在 Java 中嵌套 try/catch 语句是否可以接受?

标签 java android exception-handling try-catch

我正在尝试根据传入的值(使用 Bundle)在 Android 中创建 IP 地址,如果失败,我将使用硬编码的默认 IP 地址创建它。如果失败,我将退出该应用。

我想知道的是,是否可以像我在这里所做的那样嵌套 try/catch,或者是否有更好的方法。

try {
    // serverSettings is the Bundle name that was passed in.
    ipAddress = InetAddress.getByName(serverSettings.getString("serverIp"));
} catch (UnknownHostException e) {
    Log.e("ERROR:", "IOException: Failed to create IP, trying default");
    try {
        // DEFAULT_IP is the hard-coded default fall-back address
        ipAddress = InetAddress.getByName(DEFAULT_IP);
    } catch (UnknownHostException e1) {
        Log.e("ERROR:", "IOException: Total fail, exiting");
        e1.printStackTrace();
        finish();
    }
}

最佳答案

这是合法的 Java。它对我来说看起来很笨重,我可能会以不同的方式来做,但它是有效的并且有效。

这是我的做法:

public InetAddress getServerAddress() {
    for (String address : new String[] {serverSettings.getString("serverIp"), DEFAULT_IP}) {
        try {
            return InetAddress.getByName(address);
        } catch (UnknownHostException e) {
            Log.e("ERROR:", "Cannot resolve " + address);
        }
    }
    Log.e("ERROR:", "Total fail, exiting");
    finish();
    return null;    // not reached
}

关于java - 在 Java 中嵌套 try/catch 语句是否可以接受?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5774505/

相关文章:

java - 如何检查两个字符串实际上相等并且具有相同的字符?即使有空格或小写

objective-c - 由于 Objective-C 中的异常,我应该如何处理可能的内存泄漏?

python - try-except 中的更改在捕获到异常后仍然存在

java - 仅检查一个条件的 while true 循环线程安全吗?

java - 我如何添加表示为字符串的非常大的数字,即 50 位数字

android - 如何从 MpAndroidChart 中删除饼图上的多余空格?

android - Google Play 没有显示我的应用

android - 无法解析 com.google.firebase :firebase-crash:17. 0.2

python - 如何在 Flask-reSTLess 中返回 "already exists"错误?

java - nextLine() 扫描仪 java 无法正常工作(可能是因为 Unicode)