微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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="";
    }
}

现在问题是应用程序退出我有这样的功能
自动保存上面填充的List对象
文件方法.喜欢:

void whenAppisQuitting()
{
    Savesomething(listofObjects,xmlPath);
}

但问题是.想象一下xmlDoc = loadXMLdata();抛出上面的方法.会发生什么是我提到的列表不会被填充,当应用程序退出时,空元素(例如空listofObjects)将被写入xmlPath – 从而损坏我的原始文件,因为由于loadXMLData方法中的加密而存在无关的异常.

我希望我的问题清楚.处理这种情况的方法是什么?例如我所做的你可以看到我在catch中将xmlPath设置为空 – 因此在任何异常情况下我认为数据未成功加载 – 因此现在在应用程序退出时我可以保持冷静,因为没有任何内容会被写入文件,因为它的xmlPath = “”.这是解决这个问题的合理方法吗?

有点困惑,因为这种问题现在将错误处理提升到不同的水平 – 我需要考虑所有可能的故障类型?

解决方法

What is the way to deal with such situations?

我会设置一个标志,指示解析时出错.将路径设置为string.Empty会导致混淆(IMO).也许一个空字符串可能是传递给您的方法的可能值.

catch(Exception ex)
{
    // Log
    IsParsingSuccessful = false;
}

当你想写时,看看那面旗帜:

void AppIsQuitting()
{
    if (IsParsingSuccessful)
    {
        SaveSomething(listofObjects,xmlPath);
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐