代码之家  ›  专栏  ›  技术社区  ›  wRAR

如何从库中传递非致命警告

  •  3
  • wRAR  · 技术社区  · 15 年前

    库函数解析文件并返回对象。如果解析器遇到未知数据、缺少值等,它不应该抛出异常并停止解析(因为这不是致命的),但是应该有一种方法将这些信息传递给调用者(例如,可以在UI中显示警告)。如何回复这些警告?我正在考虑将回调函数/对象传递到库中,还有其他可能的解决方案吗?

    5 回复  |  直到 15 年前
        1
  •  4
  •   Nick Craver    15 年前

    我会有一个可以在解析器上轻松访问的错误集合,如下所示:

    public class Parser
    {
       public bool HasErrors { 
         get { return ParseErrors != null && ParseErrors.Count > 0; } 
       }    
       public List<string> ParseErrors { get; set; }
       public object Parse(string fileName) {}
    }
    

    或者不管你想要什么类型的错误,当然,更详细的可能。

    调用库的代码如下所示:

    var p = new Parser();
    var o = p.Parse("file.txt"); //Get object
    if(p.HasErrors) //Uh oh, abort, do something with p.ParseErrors
    
        2
  •  1
  •   dankuck    15 年前

        3
  •  1
  •   David Hedlund    15 年前

    返回的对象可能包含警告。在webservices中,我通常处理包装类,就像:

    class Wrapper {
        List<Warning> Warnings { get; set; }
        bool HasWarnings { get { return Warnings != null && Warnings.Count > 0; } }
        MyObject Result { get; set; }
    }
    

    可以

        4
  •  1
  •   Damien_The_Unbeliever    15 年前

    class ParseResult (
        Outcome <succesful, warnings, failed completely>,
        ParseOutput <result>,
        List<Warning> warnings
    )
    

    因此,你可以得到一块金块,在那里你可以快速打开最终结果,但也得到状态和警告

        5
  •  0
  •   TLiebe    15 年前