gpt4 book ai didi

java - 捕获异常后继续执行多个try-catch语句场景中的程序

转载 作者:行者123 更新时间:2023-12-01 16:32:14 27 4
gpt4 key购买 nike

我的项目中运行以下代码:

HashMap<String, DeviceData> deviceMap = getAllDevices();

int status = 0;
DeviceHandle devHandle = null;

for (LicenseData licenseData:listLicenses) {

Map<String, String> licenseMap = licenseData.getLicenseKeyValues();

if ((licenseMap != null && !licenseMap.isEmpty())) {
String keyDecrypt = licenseMap.get("key");
Date expiryDate = new Date(Long.parseLong(licenseMap.get("expiryDate")));
boolean allowForeign = Boolean.parseBoolean(licenseMap.get("allowForeign"));
String ipDecrypt = licenseMap.get("ipAddress");

if (expiryDate.compareTo(new Date()) > 0 || keyDecrypt.equals(licenseData.getKey().getCurrentValueAsString()))
{
try {
DeviceData device = deviceMap.get(ipDecrypt);
devHandle = (DeviceHandle)device.getHandle();

if(device != null && devHandle != null) {
deviceMap.remove(ipDecrypt, device);
System.out.println("After deletion device map.");
System.out.println(deviceMap);
createUser(devHandle);

try {
if (allowForeign) {
Process pr = Runtime.getRuntime().exec(SomeOperation);
status = pr.waitFor();
if (status == 0)
//Debug Statement
else
//Error Debug Statemnt

deleteUser(devHandle);
}

else {
Process pr = Runtime.getRuntime().exec(SomeOperation);
status = pr.waitFor();
if (status == 0)
//Debug Statement
else
//Error Debug Statement

deleteUser(devHandle);
}
} catch(Exception e) {
//Exception statement
deleteUser(devHandle);
}

} catch(Exception e) {
e.printStackTrace();
}
}
}
}

说明:我的应用程序在 listLicenses 中有一个许可证列表。服务器中存在的所有设备都在 deviceMap 中。对于每个许可证,我都会对其进行解密并获取值。如果存在设备许可证,我可以获取该设备的句柄并执行一些操作。

问题是:如果我无法获取设备句柄(getHandle()),或者在获取设备句柄(createUser())后无法创建用户,则会引发异常。这些方法是非常分层的,即我从这里调用它们,它们在另一个类中抛出自己的异常,并且为了它们的操作,它们调用其他方法。

如果 map 中有三个设备和三个许可证,并且如果对于第一个设备我无法获取句柄或创建用户,则设备将从 deviceMap 中删除,但不会发生进一步的执行,即对于接下来的两个设备。

如果一个设备发生异常,我想继续其他两个设备的异常。我尝试使用 return 但无法让它工作。请帮忙。另外,请原谅语法以及代码中是否存在任何不匹配。

最佳答案

利用第一次尝试的 catch block 。

这就是我遇到类似情况时的处理方式。

catch (Exception exp) {

if (exp instanceof NullPointerException) {
log.info"Invalid/ Inactive ");
} else if (exp instanceof NonUniqueResultException) {
log.info("Multiple records existed");
} else {
exp.printStackTrace();
errorMsgs.append("Unexpected Error Occured. Please contact Admin.");
}
}

关于java - 捕获异常后继续执行多个try-catch语句场景中的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62019165/

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