【问题标题】:Compilation failed: throw an exception or do not?编译失败:抛出异常还是不抛出?
【发布时间】:2009-03-21 14:34:49
【问题描述】:

我正在为 CLR 脚本编写 .NET On-the-Fly 编译器。并且有一个两难选择:在构建失败时抛出异常是否更好?

那么最佳实践观点是什么,哪种方法更合适?

try
{
  compiler.Compile(); // do not throws an exception only if build succeed
}
catch(CompilerException ex)
{
  string err = ex.Message;
}

compiler.Compile(); // throws an exception only in case of crash, etc
if(!compiler.BuildSucceed)
{
  string err = compiler.Output.ToString();
}

【问题讨论】:

    标签: .net exception architecture


    【解决方案1】:

    异常应该用于异常条件。我想说失败的构建不是异常,所以你应该让编译器的接口返回一个指示成功或失败的值(例如布尔或枚举),并提供一个返回列表的接口的错误。这可以像返回一个串联在一起的所有错误的字符串一样简单,也可以像您事先将一个输出流传递给它,并在遇到错误时将每个错误记录到该流中。

    【讨论】:

    • 我同意 - 对于编译器来说,失败的构建是一个完全有效的结果,而不是错误场景,因此应该由方法本身而不是通过异常来解决。 +1。
    猜你喜欢
    • 2023-01-22
    • 2018-01-29
    • 2010-11-02
    • 1970-01-01
    • 2011-06-04
    • 2012-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多