c# – 处理加载和显示数据之间的异常
我有这种情况不知道如何最好地处理这个.输入将不胜感激.想象一下我有这样的方法:
void loaddata() { try { // EXTRA: I also want to skip below SaveSomething if there was exeption // last time I called DecryptAndloadXMLdata. This may happen // if user calls loaddata twice. This is exaclty similar situation // as app quitting just it happens is user calls loaddata twice // and during first call there was exception say with DecryptAndloadXMLdata Savesomething(listOfObjects,xmlPath);//save old data first xmlPath = newValue; // some operations xmlDoc = DecryptAndloadXMLdata(xmlPath); // some other operations- populate List with data from above XML file listOfObjects.Add(objectFromXML); // Here also possibly modify contents of listOfObjects elements } catch(Exception ex) { xlmPath=""; } } 现在问题是应用程序退出时我有这样的功能 void whenAppisQuitting() { Savesomething(listOfObjects,xmlPath); } 但问题是.想象一下xmlDoc = loadXMLdata();抛出上面的方法.会发生什么是我提到的列表不会被填充,当应用程序退出时,空元素(例如空listOfObjects)将被写入xmlPath – 从而损坏我的原始文件,因为由于loadXMLData方法中的加密而存在无关的异常. 我希望我的问题清楚.处理这种情况的方法是什么?例如我所做的你可以看到我在catch中将xmlPath设置为空 – 因此在任何异常情况下我认为数据未成功加载 – 因此现在在应用程序退出时我可以保持冷静,因为没有任何内容会被写入文件,因为它的xmlPath = “”.这是解决这个问题的合理方法吗? 有点困惑,因为这种问题现在将错误处理提升到不同的水平 – 我需要考虑所有可能的故障类型? 解决方法
我会设置一个标志,指示解析时出错.将路径设置为string.Empty会导致混淆(IMO).也许一个空字符串可能是传递给您的方法的可能值. catch(Exception ex) { // Log IsParsingSuccessful = false; } 当你想写时,看看那面旗帜: void AppIsQuitting() { if (IsParsingSuccessful) { SaveSomething(listOfObjects,xmlPath); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 2018 10-708 (CMU) Probabilistic Graphical Models {Lectu
- ruby-on-rails – Rails似乎是在created_at,updated_at值的
- AJAX POST请求中参数以form data和request payload形式在ph
- ruby-on-rails-3 – 工厂女孩序列没有递增
- 解决No grammar constraints (DTD or XML Schema) referenc
- iOS IPA Re-packagin /重新签名AppStore应用程序
- 颤动:使用navigator.dart时失败断言
- SQLite数据库损坏与修复
- ruby-on-rails – Sidekiq列出所有工作[排队运行]
- 在SQLite中获取数字的ceil值