在try块

时间:2015-08-05 07:50:27

标签: python pycharm

try:
    driver = launch_browser()
except:
    print "Browser launch failed"

driver.get("http://www.example.com/")

上面的最后一行由PyCharm标记,出现以下问题:

  

本地变量"驱动程序"可能在作业之前被引用

然而,这样的事情会让错误消失:

driver = None
try:
    driver = launch_browser()
except:
    print "Browser launch failed"

driver.get("http://www.example.com/")

有没有办法设置PyCharm,以便它可以看到try块内的分配?

其次,PyCharm可以根据函数的返回值(在这种情况下为launch_browser())计算出类型,如果它有docstrings吗?

BTW,代码在两种情况下都能正常工作。这只是让PyCharm理解try区内的任务而不必求助于创可贴的问题。

编辑1:

return块中的except:修复了与PyCharm有关的问题。我正在研究其他事情并无意中将其评论出来。证明连续编码16小时是一个非常糟糕的主意......

1 个答案:

答案 0 :(得分:3)

如果launch_browser()失败,您的代码将在driver.get("http://www.example.com/")行出错。 PyCharm让你知道这一点。

避免这种情况的唯一方法是不执行except以下的任何内容,例如在其中抛出异常,或者将driver内的所有内容放在else块中,只有在没有异常被捕获时才会运行。 E.g。

try:
    driver = launch_browser()
except:
    print "Browser launch failed"
else:
    driver.get("http://www.example.com/")