python 如何捕获参数异常?
有这个函数:
def hello(msg): print('hello'+msg)
假设现在我在调用 hello
时不传递 msg 参数, 那么Python 会抛出 TypeError
异常.
有没有什么办法能在 hello
函数中捕获这个异常呢?
回答:
谢谢大家, 刚刚找到答案了, 可以用装饰器实现, 先定义个 check
装饰器:
import tracebackimport sys
def check(method):
'''
check argument
'''
def wrapper(*args, **kw):
try:
return method(*args, **kw)
except TypeError:
print("I catch you!")
stack = traceback.format_list(traceback.extract_stack())
for line in stack:
print('>> '+line.strip())
print(sys.exc_info())
return wrapper
然后还要把 hello
函数添加上装饰器:
@checkdef hello(msg):
print(msg)
回答:
python">try: hello()
except TypeError:
print('出错了')
回答:
题主要求在hello
函数中捕获这个异常
:
可以试试:
def hello(msg = None): if msg==None:
raise Exception("TypeError")
print('hello'+msg)
建议用楼上的方法
回答:
异常只能是从内向外传递,TypeError 是调用函数引起的, 并不是因为函数内部引起的,
综上所述,个人觉得这个异常没法在函数内部捕获。
以上是 python 如何捕获参数异常? 的全部内容, 来源链接: utcz.com/a/157866.html