我正在为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(); }
Adam Rosenfi.. 5
异常应用于特殊情况.我会说失败的构建并不例外,所以你应该让编译器的接口返回一个表示成功或失败的值(例如bool或enum),并提供一个返回错误列表的接口.这可以简单到返回连接在一起的所有错误的字符串,或者它可能类似于事先将输出流传递给它,并且它会在遇到它们时将每个错误记录到该流.
异常应用于特殊情况.我会说失败的构建并不例外,所以你应该让编译器的接口返回一个表示成功或失败的值(例如bool或enum),并提供一个返回错误列表的接口.这可以简单到返回连接在一起的所有错误的字符串,或者它可能类似于事先将输出流传递给它,并且它会在遇到它们时将每个错误记录到该流.