Let's say I have an async function like this:
async def foobar(argOne, argTwo, argThree):
print(argOne, argTwo, argThree)
I want to make a decorator and use it on this function in a way that it wraps the above code in a try except statement like this:
try:
print(argOne, argTwo, argThree)
except:
print('Something went wrong.)
Is there any way to do this?
because wrapper called first, we should also define it as a async function: async def wrap(*arg, **kwargs):
import asyncio
def decorator(f):
async def wrapper(*arg, **kwargs):
try:
await f(*arg, **kwargs)
except Exception as e:
print('Something went wrong.', e)
return wrapper
@decorator
async def foobar(argOne, argTwo, argThree):
print(argOne, argTwo, argThree)
await asyncio.sleep(1)
asyncio.run(foobar("a", "b", "c"))
def deco(coro1):
async def coro2(argOne, argTwo, argThree):
try:
await coro1(argOne, argTwo, argThree)
except:
print('Something went wrong.')
return coro2
@deco
async def foobar(argOne, argTwo, argThree):
print(argOne, argTwo, argThree)
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.