Decorador general para envolver probar excepto en python?

Interactuaba con un montón de json profundamente anidados que no escribí, y me gustaría hacer que mi script en Python sea más "indulgente" que la entrada no válida. Me encuentro escribiendo bloques try-except, y preferiría simplemente cerrar la dudosa función.

Entiendo que es una mala política tragar excepciones, pero prefiero que sean impresas y analizadas más tarde que detener la ejecución. Es más valioso, en mi caso de uso, continuar ejecutándose en el ciclo que obtener todas las claves.

Esto es lo que estoy haciendo ahora:

try:
    item['a'] = myobject.get('key').METHOD_THAT_DOESNT_EXIST()
except:
    item['a'] = ''
try:
    item['b'] = OBJECT_THAT_DOESNT_EXIST.get('key2')
except:
    item['b'] = ''
try:
    item['c'] = func1(ARGUMENT_THAT_DOESNT_EXIST)
except:
    item['c'] = ''
...
try:
    item['z'] = FUNCTION_THAT_DOESNT_EXIST(myobject.method())
except:
    item['z'] = ''

Esto es lo que me gustaría, (1):

item['a'] = f(myobject.get('key').get('subkey'))
item['b'] = f(myobject.get('key2'))
item['c'] = f(func1(myobject)
...

o (2):

@f
def get_stuff():
   item={}
   item['a'] = myobject.get('key').get('subkey')
   item['b'] = myobject.get('key2')
   item['c'] = func1(myobject)
   ...
   return(item)

... donde puedo envolver el elemento de datos único (1), o una función maestra (2), en alguna función que convierte las excepciones que detienen la ejecución en campos vacíos, impresos en stdout. El primero sería una especie de salto de elementos: donde la clave no está disponible, se registra en blanco y se mueve, el segundo es un salto de fila, donde si alguno de los campos no funciona, todo el registro es saltado

Tengo entendido que algún tipo de envoltorio debería poder arreglar esto. Esto es lo que intenté, con un envoltorio:

def f(func):
   def silenceit():
      try:
         func(*args,**kwargs)
      except:
         print('Error')
      return(silenceit)

Aquí es por qué no funciona. Llama a una función que no existe, no trata de atraparla:

>>> f(meow())
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'meow' is not defined

Antes de que incluso agregue un valor de retorno en blanco, me gustaría obtenerlo para intentar capturarlo correctamente. Si la función hubiera funcionado, se habría impreso "Error", ¿verdad?

¿Es una función de envoltura el enfoque correcto aquí?

ACTUALIZAR

He recibido muchas respuestas útiles y útiles a continuación, y gracias por ellas, pero edité los ejemplos que usé anteriormente para ilustrar que estoy tratando de detectar más que errores de claves anidados, Estoy buscando específicamente una función que envuelva un try-catch para ...

Cuando un método no existe.Cuando un objeto no existe, y recibe un método llamado en él.Cuando un objeto que no existe se llama como un argumento a una función.Cualquier combinación de cualquiera de estas cosas.Bonificación, cuando una función no existe.

Respuestas a la pregunta(8)

Su respuesta a la pregunta