我有时会在.net框架中看到前缀为“Try”的方法,例如int.TryParse(..)。
我认为这意味着该方法与int.parse相同,但是包含在try catch中?
这是否意味着如果我编写的方法会尝试捕获它们(例如日志记录,我从不想引发异常),它们也应该以“try”为前缀?
答案 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包装。