在 if() 和 try-catch 之间进行选择
Choosing between if() and try-catch
例如,如果table中不存在该列,则需要创建该列时,我应该使用什么?
我可以编写一个代码来检查列是否存在不存在,然后才添加它,这样我就可以通过将我的方法包装在 try-catch 中而不进行检查(如果有 - catch例外情况,如果没有 - 将添加该列)
结果是一样的。
而且还有很多例子,比如你可以扫描文件存在,然后才做一个副本,你可以捕获异常。
哪种方法比较识字,还是对的?
我认为没有 "right" 可走的路。无论哪种方式都有效,无论如何都能实现您的目标。然而,对于干净的代码,我的(非常主观的)观点是异常应该只用作非常 "literal" 的东西,并指示发生了异常(或意外)的事情。因此,在大多数情况下,您只是简单地用异常向您的运行时发送垃圾邮件。但是,如果您试图扫描文档并且总是希望有一定数量的列,那么它可能是例外的正确方法,因为错误的列数就是这样:一个例外。
有趣的是,您的问题取决于您所谈论的编程语言。
在 C、Java、C++、C# 等语言中,人们更喜欢 "LBYL"(Look Before You Leap)模式;而诸如 python 之类的语言非常强调 "EAFP"(请求宽恕比请求许可更容易)。
意思:在python中,你使用了try/catch很多(即使"counting for loop"被实现为try/catch );而在 C#、Java、C++ 中,您更愿意使用 if/else。
遵守这些约定非常重要 - 大多数 Cx 语言程序员只是假设您不使用 try/catch 来对控制流建模。换句话说:您应该遵循使用该语言的大多数其他开发人员将使用的范例。
例如,如果table中不存在该列,则需要创建该列时,我应该使用什么?
我可以编写一个代码来检查列是否存在不存在,然后才添加它,这样我就可以通过将我的方法包装在 try-catch 中而不进行检查(如果有 - catch例外情况,如果没有 - 将添加该列)
结果是一样的。
而且还有很多例子,比如你可以扫描文件存在,然后才做一个副本,你可以捕获异常。
哪种方法比较识字,还是对的?
我认为没有 "right" 可走的路。无论哪种方式都有效,无论如何都能实现您的目标。然而,对于干净的代码,我的(非常主观的)观点是异常应该只用作非常 "literal" 的东西,并指示发生了异常(或意外)的事情。因此,在大多数情况下,您只是简单地用异常向您的运行时发送垃圾邮件。但是,如果您试图扫描文档并且总是希望有一定数量的列,那么它可能是例外的正确方法,因为错误的列数就是这样:一个例外。
有趣的是,您的问题取决于您所谈论的编程语言。
在 C、Java、C++、C# 等语言中,人们更喜欢 "LBYL"(Look Before You Leap)模式;而诸如 python 之类的语言非常强调 "EAFP"(请求宽恕比请求许可更容易)。
意思:在python中,你使用了try/catch很多(即使"counting for loop"被实现为try/catch );而在 C#、Java、C++ 中,您更愿意使用 if/else。
遵守这些约定非常重要 - 大多数 Cx 语言程序员只是假设您不使用 try/catch 来对控制流建模。换句话说:您应该遵循使用该语言的大多数其他开发人员将使用的范例。