首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >捕获已捕获的异常

捕获已捕获的异常
EN

Stack Overflow用户
提问于 2020-10-05 17:59:40
回答 6查看 75关注 0票数 0

我有一个函数,它既应该独立运行,又可以由处理某些异常的其他函数使用

代码语言:javascript
复制
def some_function():
    try:
        do_something()
    except SpecificException:
        handle_exception()

我还有第二个函数,它调用第一个函数,但是希望在some_function中以不同的方式处理这个异常

代码语言:javascript
复制
def different_function():
    try:
        some_function()
    except SpecificException:
        different_handling()

这有可能吗?我正在寻找的是一种在some_function中禁用except的方法,以便different_function中的try-except可以捕获SpecificException

EN

回答 6

Stack Overflow用户

发布于 2020-10-05 18:23:48

告诉函数some_function不要处理异常并传递它

代码语言:javascript
复制
def some_function(handleException=True):
    try:
        do_something()
    except SpecificException:
        if !handleException: raise
        handle_exception()

def different_function():
    try:
        some_function(handleException=False)
    except SpecificException:
        different_handling()

或者为函数some_function提供要使用的异常处理程序

代码语言:javascript
复制
def some_function(exceptionHandler=handle_exception):
    try:
        do_something()
    except SpecificException:
        exceptionHandler()

def different_function():
    some_function(exceptionHandler=different_handling)
票数 3
EN

Stack Overflow用户

发布于 2020-10-05 18:21:42

您可以在第一个函数中执行所需的逻辑后再次引发异常。

代码语言:javascript
复制
def some_function():
    try:
        do_something()
    except SpecificException as e:
        handle_exception()
        raise e 
票数 2
EN

Stack Overflow用户

发布于 2020-10-05 18:33:07

您可以使用raise语句重新引发它。

代码语言:javascript
复制
def some_function():
    try:
        do_something()
    except SpecificException:
        handle_exception()
        raise

正如the doc所说:If no expressions are present, raise re-raises the last exception that was active in the current scope.

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64206407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档