我正在搜索我的数据库检查地址并使用Geocode找到lat / lng。 一旦我点击一个空值的记录,它就会移动到catch。知道如何让它移动到下一个记录吗?
table
答案 0 :(得分:5)
在循环中捕获异常:
while (reader.Read())
{
try
{
// do something
}
catch (Exception ex)
{
// examine the exception to see what went wrong
// if you can't continue, then "throw;"
// else...
continue;
}
}
编辑:请注意,上述内容将是从异常中恢复以继续循环的方式。 然而,也许我最初误解了这个问题。如果可以轻松且有意义地避免例外首先(即,如果它不是真正的例外条件),那么这将是首选。考虑一下不应该使用异常来控制逻辑流的格言。
从逻辑上讲,如果您在执行导致异常的操作之前能够检查此情况,那么代码的整体结构将更像是这样:
while (reader.Read())
{
// do something
if (someCondition)
{
// do the rest of the something
}
else
continue;
}
(或者您可以将条件反转以检查"继续"案例首先,这也很有效。它取决于您在代码中看起来更干净的东西。)
在您的特定情况下,它完全取决于 导致其失败的内容。例如,如果您的某个变量是null
,那么您可以检查:
var result = xdoc.Element("GeocodeResponse").Element("result");
if (result == null)
continue;
基本上,您需要确定代码中可能失败的内容,并引入一些逻辑条件以从该故障中恢复。理想情况下,任何此类"继续"在发生任何永久性副作用之前,将完成循环。在你的代码中,看起来唯一的永久副作用是写入控制台,所以我建议将所有这些放在循环体的最后。然后在检查条件时,只要在逻辑中遇到可继续故障状态,就可以continue;
。如果一切都过去了,代码就会到达写入控制台的行,然后自然地继续。
答案 1 :(得分:1)
您可以检查列的空值并继续。这通常被认为比捕获异常更清晰,特别是如果你期望在这里和那里有一些空值。
类似的东西:
rails g erb:scaffold