Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 是否有一个“问题”;试一试;惯例?_.net_Try Catch - Fatal编程技术网

.net 是否有一个“问题”;试一试;惯例?

.net 是否有一个“问题”;试一试;惯例?,.net,try-catch,.net,Try Catch,我有时会在.net framework中看到前缀为“Try”的方法,例如int.TryParse(..) 我假设这意味着该方法与int.parse相同,但包装在try-catch中 这是否意味着,如果我编写的方法周围有一个try-catch(例如日志记录,我从不想引发异常),那么它们也应该以“try”作为前缀?没有与异步操作(BeginXXX-EndXXX)相同的约定,但是,它用于区分与其他代码相同但不会抛出异常的代码(通过吞咽异常或不生成异常) 如果您的代码是另一种不提供异常处理的方法的替代方

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

我假设这意味着该方法与int.parse相同,但包装在try-catch中


这是否意味着,如果我编写的方法周围有一个try-catch(例如日志记录,我从不想引发异常),那么它们也应该以“try”作为前缀?

没有与异步操作(BeginXXX-EndXXX)相同的约定,但是,它用于区分与其他代码相同但不会抛出异常的代码(通过吞咽异常或不生成异常)

如果您的代码是另一种不提供异常处理的方法的替代方法,我会在它前面加上Try,因为它在某种程度上是可以识别的,而.NET用户首先会假设它的行为不会抛出异常

这可以通过为成功返回bool并将返回值作为out参数来加强


为了回答这个问题,它不应该仅仅放在任何处理异常的方法周围;只有在提供我概述的行为合乎逻辑的情况下;.NET Framework中某些实例当前提供的行为。

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

实际上,该方法在调用时不会抛出异常(内部如何管理并不重要)

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

TryParse
方法特别具有一个
out
参数,如果成功,将使用解析结果填充该参数

要直接回答问题:

  • 没有具体的公约
  • 如果该方法的语义意味着不会抛出异常,但会通知调用代码成功/失败,则可以将其命名为
    Try***
    ,因为这是该名称隐含的行为类型

就性能而言,int.TryParse方法并不等同于将try/catch包装到int.parse。int.TryParse的目的是避免异常抛出导致的性能影响,因此将int.TryParse实现为int.parse并使用try/catch包装是没有意义的