忽略Python中的异常

时间:2012-02-11 20:21:47

标签: python try-except

我在python中有try-except块,我想在发生异常时什么都不做。我的代码如下:

for i in range(len(grid)):
    for j in range(len(grid[i])):
        try:
            count = count > int(grid[i][j]) ? count : int(grid[i][j])
        except:
            //Do nothing here

如果发现异常,我该怎么办?

感谢。

5 个答案:

答案 0 :(得分:14)

pass是您要查找的关键字。

答案 1 :(得分:7)

让我们正确编写代码。

  • 我们想迭代网格的每个单元格。所以那样做。不要创建迭代的数字列表(range),然后用它们重新编入索引.Python的for循环直接使用容器。它既方便又易于理解。不要打架。

  • Python中没有?:构造。有x if y else z构造,但这不合适。您显然正在尝试将count设置为其当前值和单元格值的最大值。有一个内置的功能。

  • 你真的想要所有这些细胞的最大值。所以直接要求;不要以为你必须自己实施高水位线算法。你没有。 (这也可以保护您不必选择count的初始值,这可能是错误的。)我们不需要为此进行迭代。我们可以使用生成器表达式指定要传递给max的值列表。

  • 您想要“忽略”无法转换为整数的值。尽管您的其他代码可能存在问题,但如果首先可能存在这样的值:我们可以简单地进行测试,并筛选出未通过测试的值。

因此:

def is_integral(value):
    try:
        int(value)
        return True
    except:
        return False


# Now, get the maximum of all the integral values:
count = max(
    int(cell) for row in grid for cell in row
    if is_integral(cell)
)

答案 2 :(得分:4)

for i in range(len(grid)):
    for j in range(len(grid[i])):
        try:
            count = count > int(grid[i][j]) ? count : int(grid[i][j])
        except:
            pass

答案 3 :(得分:4)

您可以使用pass,但{3}}在Python 3.x中也是同义词,这对编写伪代码很有用。

我看到很多人使用pass他们确实无需做任何事情,同时使用...将其用作占位符。

class SomeInterface:
    def do_something(self):
        pass

class SomeImplementation(SomeInterface):
    def do_something(self)
        ...

这样可以轻松搜索...并查找未实现代码的区域,而不会出现pass的误报。

请注意,传递异常通常是一种不好的做法,因为您几乎总是希望对异常采取行动。你至少应该指定你想要捕获的确切异常,否则你将捕获所有异常,可能导致你无法检测到的错误,如果一个不同的异常重新出现它。

答案 4 :(得分:0)

result = x if a > b else y

是三元运算符

不做任何陈述是

pass