针对无效接收参数值引发异常的最佳实践

时间:2015-04-30 18:40:53

标签: python python-2.7 python-3.x

每次我编写一个具有(一个或多个)参数的函数时,我在函数体中做的第一件事就是检查每个参数的接收值是否有效。

例如:

    def turn_on_or_off_power_supplies (engine, power_supply, switch_on_or_off = RemoteRebootConst.OFF):

        '''
            @summary:                                     
                The function turns off or turns on the switch.

            @param engine:
                SSH connection to the switch

            @param switch_on_or_off:
                This sets whether to turn off, or turn on the switch.
                Use the following constants in infra_constants.py:
                    RemoteRebootConst.OFF = off 
                    RemoteRebootConst.ON = on
        '''

        if switch_on_or_off != RemoteRebootConst.ON and switch_on_or_off =! RemoteRebootConst.OFF:
            raise Exception("-ERROR TEST FAILED \n" 
                            "Function Name: turn_on_or_off_power_supplies \n"
                            "Parameter 'switch_on_or_off' \n" 
                            "Expected value: %s or %s \n"
                            "Actual value: %s"
                            % (RemoteRebootConst.ON, RemoteRebootConst.OFF, switch_on_or_off))

Output omitted...

为什么我这样做?因为这样,如果收到异常,调试的开发人员可以立即知道问题发生在哪个函数中,期望值是什么,s是什么实际值。此错误消息使调试此类问题变得更加容易。

如前所述,如果有更多参数,我将为EACH参数执行上述代码。

这使我的函数体在代码行数方面变得更大。

如果由于收到无效参数值而导致异常(函数名称,参数名称,期望值,实际值?

),是否有更多pythonic方式打印所有上述详细信息?

我可以编写一个函数,它接收4个参数(函数名,参数名,期望值/ s,实际值),然后每次我想提出这种异常时使用它(这将导致每个例外这种只是一行代码而不是几行代码。

我将在此感谢任何帮助。

提前致谢。

0 个答案:

没有答案