是否有“尝试”惯例?

时间:2010-07-21 10:02:16

标签: .net try-catch

我有时会在.net框架中看到前缀为“Try”的方法,例如int.TryParse(..)。

我认为这意味着该方法与int.parse相同,但是包含在try catch中?

这是否意味着如果我编写的方法会尝试捕获它们(例如日志记录,我从不想引发异常),它们也应该以“try”为前缀?

3 个答案:

答案 0 :(得分:7)

您的假设可能是正确的,但这不是Try***类型方法的含义。

承诺确实是该方法在调用时不会抛出异常(如何在内部管理这无关紧要)。

您会注意到这些方法返回一个布尔值,表明Try***是否成功。

TryParse方法专门有out参数,如果成功,将使用解析结果填充。

直接回答问题:

  • 没有特定的约定
  • 如果方法的语义意味着不会抛出异常,但会通知调用代码成功/失败,您可以将其命名为Try***,因为这是此类名称所暗示的行为

答案 1 :(得分:0)

没有与异步操作(BeginXXX EndXXX)具有相同意义的约定,但它用于区分将与其他代码执行相同的代码,但不会通过吞咽异常来抛出异常生成它们。

如果你的代码是另一个不提供异常处理的方法的替代方法,我会在它前面加上Try,因为它有点被认可 - 而且.NET人会先假设它的行为不会抛出异常。

可以通过返回bool表示成功并将返回值作为out参数重新强制执行。

要回答这个问题 - 不应该只围绕处理异常的任何方法;只有在逻辑上有理由提供我概述的行为的情况下; .NET Framework中某些实例当前提供的行为。

答案 2 :(得分:0)

int.TryParse方法不等同于在性能方面将try / catch包装到int.parse。 int.TryParse的目的是避免异常抛出导致的性能影响,因此没有必要将int.TryParse实现为int.parse用try / catch包装。

相关问题