如何不返回到调用函数?

2024-04-20 06:07:26 发布

您现在位置:Python中文网/ 问答频道 /正文

在python中,有一种方法可以在被调用函数中发生某个事件时不返回调用函数。例如,。。。你知道吗

def acquire_image(sdkobject):

    ret = sdkobject.PrepareAcquisition()
    error_check(ret)

    ret = sdkobject.StartAcquisition()
    error_check(ret)

error\u check是一个函数,它检查返回代码以查看sdk调用是否有错误。如果它是一个错误消息,那么我不想返回到获取和图像,而是转到另一个函数来重新调整sdk的意大利和从头开始。有没有一种类似Python的方法?你知道吗


Tags: 方法函数imagedefcheck错误事件sdk
3条回答

如果有问题,让error_check函数引发异常(如SDKError),然后在while循环中运行所有命令。你知道吗

class SDKError(Exception):
    pass

# Perhaps define a separate exception for each possible
# error code, and make a dict that maps error codes to the
# appropriate exception.

class SDKType1Error(SDKError):
    pass

class SDKType5Error(SDKError):
    pass

sdk_errors = {
    1: SDKType1Error,
    5: SDKType5Error,
}

# Either return, if there was no error, or raise
# the appropriate exception
def error_check(return_code):
    if return_code == 0:
        return   # No error
    else:
        raise sdk_errors[return_code]


# Example of how to deal with specific SDKErrors subclasses, or a generic
# catch-all SDKError
def acquire_image(sdkobject):

    while True:
        try:
            # initialize sdk here
            error_check(sdkobject.PrepareAcquisition())    
            error_check(sdkobject.StartAcquisition())
        except SDKType1Error:
            # Special handling for this error
        except SDKError:
            pass
        else:
            break

return表示快乐场景

返回到调用函数是通过简单的returnreturn response来完成的。你知道吗

当一切顺利时,用它来解决典型的代码运行问题。你知道吗

出错时抛出异常

如果出了问题,打电话给raise Exception()。在许多情况下,您的代码不必显式地执行此操作,而是自己抛出异常。你知道吗

您甚至可以创建自己的异常实例,并使用它们向调用方传递有关出错的更多信息。你知道吗

我花了一段时间来学习这种方法,它使我的编码变得更加简单和简短。你知道吗

不关心你的调用代码会用它做什么

如果有问题,就让你的职能部门来完成任务,否则就失败。你知道吗

试图在函数中考虑客户机的责任会弄乱代码,无论如何都不是完整的解决方案。你知道吗

要避免的事情

不管是谁打电话给你

在OOP中,这是客户端匿名性的原则。只是服务请求,不在乎,谁在打电话。你知道吗

不要尝试使用异常作为返回值的替换

有时,人们利用这个事实,异常可以传递一些信息给调用者。但这是相当反模式的(总是有例外)

返回错误并使用if条件检查返回值是否有错误,如果有,则从调用函数调用重新初始化代码。你知道吗

相关问题 更多 >