这实际上只是一个效率问题。我很想知道人们用它来处理这种情况是否有更高效或逻辑的方式。
在我的asp.net应用程序中,我正在运行一个脚本来生成一个新项目,我在顶层的代码如下所示:
Dim ok As Boolean = True
ok = createFolderStructure()
If ok Then ok = createMDB()
If ok Then ok = createProjectConfig()
If ok Then ok = updateCompanyConfig()
我创建一个布尔值,每个函数返回一个布尔结果,此链中的下一个函数只有在前一个函数成功时才会运行。我这样做是因为asp.net应用程序将继续运行页面生命周期,除非存在未处理的异常,并且如果链中的某些内容出错,我不希望整个应用程序被搞砸(有很多复制和删除文件等..在本例中)。
我只是想知道其他人如何处理这种情况? vb.net单行if语句非常简洁,但我想知道是否有更好的方法?
答案 0 :(得分:2)
通常,函数不应该根据其结果返回true
/ false
- 这被认为是老式的。 try / catch块在这里更好,其中函数在发生错误时抛出异常。当然,假设错误只发生在特殊时刻:
Try
createFolderStructure()
createMDB()
createProjectConfig()
updateCompanyConfig()
''// ...
Catch ioExeption as IOException
''// handle it
End Try
答案 1 :(得分:2)
您可以将布尔值全部放在一起
If createFolderStructure() Then
If createMDB() Then
If createProjectConfig() Then
If updateCompanyConfig()
但我必须同意使用例外是处理这些情况的更好方法。
答案 2 :(得分:1)
Kobi告诉你如何做到这一点。如果你真的需要使用布尔函数的结果,那么你可以使用 AndAlso运算符链接它们。
Dim ok As Boolean
ok = createFolderStructure()
AndAlso createMDB()
AndAlso createProjectConfig()
AndAlso updateCompanyConfig()
这些表达式被懒惰地评估,即如果一个函数返回false,则不评估表达式的其余部分。