+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

如何在try / except块中正确引发异常

发布于2020-09-30 16:05     阅读(112)     评论(0)     点赞(21)     收藏(0)


0

1

2

3

4

5

6

7

8

9

现在我有一个问题,如果有的话我想引发一个特定的TypeError。但是,最终发生的是解释器看到第一个错误,然后在处理该错误时又引发了另一个错误,并说“在处理上述异常期间,发生了另一个异常:”

这就是我所拥有的

  def function(dictionary)
    try:
        value = max(dictionary.values())
    except TypeError:
        raise TypeError("some error")

我将以下内容插入外壳:

function({1:'a', 2:3})

我该如何处理?


解决方案


如果要丢弃异常上下文,则可以使用来显式丢弃它from None,例如:

try:
    value = max(dictionary.values())
except TypeError:
    raise TypeError("some error") from None

也就是说,通常最好将上下文保留在适当的位置。您唯一会看到的是未捕获到异常并且发生了默认日志记录,或者您尝试记录该异常(例如,使用logger.exception)。这些附加信息通常很有用,尤其对于像TypeError这样的异常类型非常广泛的异常ValueError(您打算捕获特定的已知子类型,并意外地捕获以完全不同的方式引起的子类型)。

需要明确的是,这仅适用于Python 3中,但随后,异常情况下链接仅存在关于Python 3; 在Python 2上,上下文会自动丢失。

0

1

2

3

4

5

6

7

8

9



所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接: https://www.pythonheidong.com/blog/article/554729/38f603c0a8cdbe84f6fb/

来源: python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

21 0
收藏该文
已收藏

评论内容:(最多支持255个字符)