【问题标题】:python sys.exit can't break the mainpython sys.exit 不能破坏主
【发布时间】:2013-09-17 15:00:20
【问题描述】:

当我在memcache.Client有一个except时,我可以捕获异常,但是mc.getstats仍然是exec,当有异常时我应该怎么做才能停止main?

def main():
    if 'host' not in dir():
        host = '127.0.0.1'
    if 'port' not in dir():
        port = '11211'

    server = host + ':' + port

    try:
        mc = memcache.Client([server], debug=1,socket_timeout=3)
        result = mc.get_stats()
        mcstat = result[0][0]
        print mcstat
    except Exception,e:
        print e
        sys.exit(3)

if __name__ == "__main__":
    try:
        main()
    except:
        sys.exit(2)

【问题讨论】:

  • 你确定mc = memcache.Client([server], debug=1,socket_timeout=3) 被屏蔽了吗?
  • 当然,在引发任何异常之前,您的代码有 40,000 个错误。
  • 当我在 memcache.Client 中有一个例外时 太好了。一些细节怎么样? 1) 你做了什么来产生错误?,以及 2) 错误信息是什么?
  • @tcaswell,它没有。该行仅创建客户端,客户端随后用于设置或从服务器获取值。如果创建客户端抛出错误,main() 将结束并且 mc.get_stats() 将不会执行。
  • 是的,我用一些错误的参数尝试了这个脚本,但是在异常之后它不能停止主函数,像这样: MemCached: MemCache: inet:172.16.181.67:30220: connect: Connection denied .标记死亡。列表索引超出范围

标签: python exception main exit


【解决方案1】:
import memcache
import sys


def main():
    host = "127.0.0.1"
    port = 11211

my_server = "{}:{}".format(host, port)

try:
    mc = memcache.Client(
       my_server   #<**** Should be an array
    )

    result = mc.get_stats()
    mcstat = result[0][0]
    print mcstat
except ValueError, e:
    print "Mission control: There was a problem..."
    print e
    sys.exit(3)

--output:--
Mission control: There was a problem...
Unable to parse connection string: "1"

【讨论】:

    猜你喜欢
    • 2011-06-23
    • 2011-07-21
    • 1970-01-01
    • 1970-01-01
    • 2020-08-05
    • 2020-11-15
    • 2012-11-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多