我正在使用Apache Ignite 2.7.5作为.Net核心中的服务器和瘦客户端。 当我执行与缓存放置,获取和加载等有关的操作时,.net核心应用程序会自动崩溃。
所以我想处理for循环内的异常,例如IgniteCheckedException
,BinaryInvalidTypeException
,ClassNotFoundException
等,然后从catch块抛出并退出for循环,否则继续for循环如果只有Exception块则进行迭代。
public async void loadData(string configPath,List<JObject> dataList)
{
using (var ldr = _ignite.GetDataStreamer<string, Employee>(cacheName))
{
foreach (var item in parsedObjectList)
{
try
{
JObject keyObj = new JObject();
foreach (var keyName in keyArray)
{
keyObj[keyName.ToString()] = item[keyName.ToString()];
}
var serializerSettings = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore };
JsonConvert.PopulateObject(item.ToString(), emp, serializerSettings);
string json = JsonConvert.SerializeObject(keyObj, Formatting.None);
string base64EncodedKey = Convert.ToBase64String(Encoding.UTF8.GetBytes(json));
await ldr.AddData(base64EncodedKey, emp);
}
catch (IgniteCheckedException ex)//how to handle here
{
throw;
}
catch (BinaryInvalidTypeException ex)//how to handle here
{
throw;
}
catch (ClassNotFoundException ex)//how to handle here
{
throw;
}
catch (Exception ex)
{
//continue for loop if data parsing ,some normal exception
Console.WriteLine(ex);
}
}
}
}
任何人都建议我,如何在.net core c#应用程序中实现这一目标。
答案 0 :(得分:1)
当您从瘦的.net客户端捕获异常时,与任何此类客户端一样,最佳操作是重试尝试,如果再次失败,请等待一段时间,关闭连接,打开新连接,然后重试。如果仍然失败,请重新抛出(写入日志,使当前操作失败)。