Devolviendo excepciones como mensajes JSON

Estoy desarrollando una API con ASP.NET Core y estoy luchando con el manejo de excepciones.

Cuando se produce una excepción, o en cualquier controlador donde deseo devolver errores personalizados con diferentes códigos de estado, quiero devolver informes de excepción con formato JSON. No necesito un HTML en las respuestas de error.

No estoy seguro de si debo usar middleware para esto u otra cosa. ¿Cómo debo devolver las excepciones JSON en una API ASP.NET Core?

Respuestas a la pregunta(2)

Su respuesta a la pregunta