【发布时间】:2016-07-20 04:43:09
【问题描述】:
这是我第一次使用 SimpleHTTPServer,老实说,这是我第一次使用一般的 Web 服务器,我遇到了一个令人沮丧的问题。我将启动我的服务器(通过 SSH),然后我会尝试访问它,一切都会好起来的。但我会在几个小时后回来,服务器将不再运行。到那时,SSH 会话已经断开,所以我看不到是否有任何错误消息。 (是的,我知道我应该使用 screen 之类的东西来保存 shell 消息——现在就尝试,但我需要等待它再次关闭。)
我认为这可能只是我的代码引发了异常,因为我没有错误处理,但我添加了应该是一个非常全面的 try/catch 块,但我仍然遇到这个问题。 (我觉得这可能不是最好的错误处理方法,但我是新手……如果有更好的方法,请告诉我)
class MyRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
# (this is the only function my request handler has)
def do_GET(self):
if 'search=' in self.path:
try:
# (my code that does stuff)
except Exception as e:
# (log the error to a file)
return
else:
SimpleHTTPServer.SimpleHTTPRequestHandler.do_GET(self)
是否有人对要检查的内容或诊断问题的方法有任何建议?我想,最有可能的是我的代码只是在其他地方崩溃了……但如果有什么特别需要我了解的关于 SimpleHTTPServer 的操作方式,请告诉我。
【问题讨论】:
-
作为第一步,您可以添加
except BaseException as e:来捕获所有其他可能引发的异常,例如SystemExit,如果您的代码可能会意外引发该异常。 -
@TadhgMcDonald-Jensen BaseException 捕获的异常类型比 Exception 多吗?
-
是的,如果尝试引发任何不是 BaseException 子类的异常,则会引发
TypeError: exceptions must derive from BaseException -
so
BaseException捕获所有可能的错误类型。虽然我能想到的只有 SystemExit 和 GeneratorExit,它们不是 Exception 的子类。哦,键盘中断
标签: python web webserver simplehttpserver