Python:导入内置模块时是否需要添加异常块?

Python:导入内置模块时是否需要添加异常块?,python,python-2.7,Python,Python 2.7,这是一个新手问题 考虑以下代码块: try: import os except ImportError as error: print " Unable to import buildin module os" raise error 导入python内置模块时是否需要添加异常块(如上所述?导入内置模块失败的原因是什么 有人能指出解释这个理论的python文档吗?简短回答,没有 更详细的回答:捕获您无法处理的异常对您的程序没有多大帮助。某些文件丢失--您可以报告它,可能

这是一个新手问题

考虑以下代码块:

try:
    import os
except ImportError as error:
    print " Unable to import buildin module os"
    raise error
导入python内置模块时是否需要添加异常块(如上所述?导入内置模块失败的原因是什么

有人能指出解释这个理论的python文档吗?

简短回答,没有

更详细的回答:捕获您无法处理的异常对您的程序没有多大帮助。某些文件丢失--您可以报告它,可能再次询问用户,或者您知道有时会发生这种情况,您可以给出一条明确的错误消息来解释原因。某些API调用失败--可能可以重试,或者有人需要重试接收服务已关闭的消息

但是像这样基本的事情……首先,它从未发生过(我二十年来从未见过导入操作系统失败)。其次,如果失败了,你的程序就没有什么用处了(如果失败了,很可能打印也会失败)。而且,库文档也没有说这是可能发生的事情

你必须依靠基本的系统工作。只有当知道异常可能被引发并且你有办法处理它们时,才能捕获异常。

简短回答,否

更详细的回答:捕获您无法处理的异常对您的程序没有多大帮助。某些文件丢失--您可以报告它,可能再次询问用户,或者您知道有时会发生这种情况,您可以给出一条明确的错误消息来解释原因。某些API调用失败--可能可以重试,或者有人需要重试接收服务已关闭的消息

但是像这样基本的事情……首先,它从未发生过(我二十年来从未见过导入操作系统失败)。其次,如果失败了,你的程序就没有什么用处了(如果失败了,很可能打印也会失败)。而且,库文档也没有说这是可能发生的事情


你必须依靠基本的系统工作。只有当知道异常可能被引发并且你有办法处理它们时,才能捕获异常。

有几个原因说明问题中的代码几乎毫无意义

首先,它不会添加任何新信息。错误只是被重新读取。打印输出不会添加错误和堆栈跟踪中没有的新信息

第二,正如所指出的,您特别询问了内置模块。对于缺少可选模块的情况,可以通过找到替代模块或关闭程序功能来做出反应,但对于平台被破坏,您无能为力


据我所知,文档中从未明确说明内置模块导入失败的问题。内置模块导入可能会由于正常导入失败的任何原因而失败。内置模块是Python文件和C扩展的集合(至少在CPython中)

首先,它不会添加任何新信息。错误只是被重新读取。打印输出不会添加错误和堆栈跟踪中没有的新信息

第二,正如所指出的,您特别询问了内置模块。对于缺少可选模块的情况,可以通过找到替代模块或关闭程序功能来做出反应,但对于平台被破坏,您无能为力


据我所知,文档中从未明确说明内置模块导入失败的问题。内置模块导入可能会由于正常导入失败的任何原因而失败。内置模块是Python文件和C扩展的集合(至少在CPython中)。修改、替换、删除这些文件可能会导致导入失败或解释器根本无法启动。设置错误的文件权限可能会产生类似的效果。

您能解释一下为什么认为有必要这样做吗?是的,这是一个错误的想法。只是想清楚地说明为什么这样做是错误的吗嗯,几年后。您现在应该选择一个答案:)完成&Thank;)你能解释一下为什么你认为这是必要的吗?是的,那是个坏主意。只是想要一个明确的理由,知道为什么它是错误的?已经有几年了。您现在应该选择一个答案:)完成&谢谢;)@用户6826339。正确的感谢方式是投票给所有帮助你的人,并点击旁边的复选标记选择你喜欢的答案。这将从未回答的队列中删除您的问题。感谢您的指点。将确保按照时间线关闭。@user6826339。正确的感谢方式是投票给所有帮助你的人,并点击旁边的复选标记选择你喜欢的答案。这将从未回答的队列中删除您的问题。感谢您的指点。将确保按照时间表关闭。