Python 将打印语句添加到ValueError异常

Python 将打印语句添加到ValueError异常,python,string,function,python-2.7,exception-handling,Python,String,Function,Python 2.7,Exception Handling,Python新手,所以我肯定这是一个noob问题,但谷歌并没有给我一个明确的答案 鉴于以下函数旨在确保用户输入是字符串,为什么在触发异常时我不能(或如何)添加打印语句?我在那里插入的打印语句无效 def string_checker(action): try: check = isinstance(action, basestring) if check == True: return True except ValueEr

Python新手,所以我肯定这是一个noob问题,但谷歌并没有给我一个明确的答案

鉴于以下函数旨在确保用户输入是字符串,为什么在触发异常时我不能(或如何)添加打印语句?我在那里插入的打印语句无效

def string_checker(action):
    try:
        check = isinstance(action, basestring)
        if check == True:
            return True
    except ValueError:
        print "We need a string here!"
        return None

action = "words"
string_checker(action)

问题是,如果
action
不是字符串,就永远不会引发值错误。试试这个:

def string_checker(action):
    try:
        check = isinstance(action, basestring)
        if check:
            return True
        else:
            raise ValueError
    except ValueError:
        print "We need a string here!"
        return None
但真的,我认为你不需要例外。这应该很好:

def string_checker(action):
    try:
        check = isinstance(action, basestring)
        if check:
            return True
        else:
            print "We need a string here!"
            return None

我不太明白。这显示为打印“此处需要字符串!”:


注意
try
中的
raisevalueerror()
。您确定正在引发异常吗?

这可能会满足您的要求:

def string_checker(action):
    try:
        assert isinstance(action, basestring)
        return True
    except AssertionError:
        print "We need a string here!"
        return None

action = "words"
string_checker(action)
string_checker(21)

但您也可以返回“我们需要一个字符串!”而不是打印它,或者返回False,以保持一致性。

谢谢!那么ValueError不是我应该在那里使用的吗?
def string_checker(action):
    try:
        assert isinstance(action, basestring)
        return True
    except AssertionError:
        print "We need a string here!"
        return None

action = "words"
string_checker(action)
string_checker(21)