函数返回时处理异常的正确方法无

时间:2016-11-01 20:40:05

标签: python exception-handling

处理函数返回None的情况的最佳方法是什么。例如:

def my_function():
     if <some_stuff_works>:
         return <stuff>
     else:
         return None

my_var = my_function()

如果my_var为None,则我要做的是引发异常,然后设置为某个值。如下所示:

try:
    my_var = my_function()
except ValueIsEmpty:
    my_var = "EMPTY"

这有意义吗?

3 个答案:

答案 0 :(得分:3)

如果您无法修改此功能,则无需提出广告素材异常:只需检查它是否为None并为其提供适当的值。

my_var = my_function()
if my_var is None:
    my_var = 'default_value'

答案 1 :(得分:1)

由于您想要使用例外,请尝试此操作;

def my_function():
     if <some_stuff_works>:
         return <stuff>
     raise ValueError

try:
    my_var = my_function()
except ValueError:
    my_var = "EMPTY"

答案 2 :(得分:0)

你可以这样做:

var = my_function() or 'default_value'

但是,var将等于&#39; default_value&#39;当my_function返回时

  • None(你想要的)
  • False
  • 0
  • 空列表[](感谢@roganjosh)

由你决定你想要什么。如果你不知道这是什么,@ brianpck的回答仍然是最好的。

您还可以使该函数引发异常,而不是返回None

def my_function():
    if <some_stuff_works>:
        return <stuff>
    else:
        raise SomeException # maybe TypeError, whatever

然后像这样称呼它:

try:
    result = my_function()
except SomeException:
    result = 'EMPTY'

甚至更好:

def my_function():
    if <some_stuff_works>:
        return <stuff>
    # no need for the else because return end up the function execution.
    # so if it returns <stuff>, it will stop, and not look further
    return 'EMPTY'