Python 引发异常的约定

我很难找到一个好的数据源来了解如何处理和引发异常。辅助函数或类方法是否应该处理引发的问题,或者调用者处理捕获异常的逻辑是否是正常约定?


我们是否在两个地方都这样做并一直跟踪堆栈跟踪?


选项A:


def change_permissions(file):

    os.chmod(file, 0o755)


try:

    change_permissions('/Users/user/Documents/file.txt')

except Exception:

    print('do something with this')

选项B:


def change_permissions(file):

    try:

        os.chmod(file, 0o755)

    except EnvironmentError:

        print('do something with this')


change_permissions('/Users/user/Documents/file.txt')


SMILET
浏览 80回答 1
1回答

白板的微信

不要将异常捕获为 e捕获 Exception 的问题与类型继承有关(因此,插曲),因为我们不仅会捕获应用程序中的所有自定义异常,还会捕获一大堆 Python 内置异常,包括一些您可能不希望抛出的异常离开。你需要特别选择,因为所以选项 B 是最好的选择其他最佳实践有一些在 python 中处理异常的最佳实践,这一切都与你有关。切勿使用异常进行流量控制不要暴露异常的实现细节记录代码抛出的异常了解我们在哪里需要断言和异常。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python