如何通过while循环持续尝试直至成功初始化V1NamespaceList对象?
解决对象初始化重试问题
你的代码存在两个核心问题:
- 首次尝试失败进入catch块后,while循环的条件
listOfns != null写反了——此时listOfns是null,循环根本不会执行 - 只有第一次失败才会进入catch块的循环,后续如果再失败就没有重试逻辑了
要实现持续尝试直到成功初始化listOfns,正确的写法是把重试逻辑放在循环体内,每次尝试失败后继续循环,直到成功赋值为止:
V1NamespaceList listOfns = null; // 持续重试直到成功初始化 while (listOfns == null) { try { listOfns = api.listNamespace(null, true, null, null, null, null, null, null, null, null); } catch (Exception e) { System.out.println("获取命名空间列表失败,正在重试..."); // 可选:添加重试间隔,避免频繁请求 try { Thread.sleep(1000); // 暂停1秒后重试 } catch (InterruptedException ie) { Thread.currentThread().interrupt(); break; // 线程被中断时退出重试 } } }
逻辑说明:
- 循环条件
listOfns == null确保只要对象未成功初始化,就一直重试 - 把
try-catch放在循环内部,每次重试都会执行尝试逻辑并捕获异常 - 可选添加
Thread.sleep()避免短时间内频繁请求,减轻服务端压力 - 处理
InterruptedException,保证线程中断时能正常退出循环
内容的提问来源于stack exchange,提问作者user2315104
相关产品推荐
相关产品推荐

