Tengo problemas con una biblioteca mal hecha que arroja una excepción en un finalizador, que por supuesto bloquea la aplicación.¿Puedo evitar que una excepción no detectada en otro AppDomain cierre la aplicación?
Para evitar esto, he intentado cargar la biblioteca en su propio dominio de aplicación, pero sigue siendo la excepción burbujas a la superficie y se bloquea la aplicación.
tal como se documenta en MSDN, registrando a AppDomain.UnhandledException
no impide la excepción de burbujeo, pero estoy bastante sorprendido de que no hay otra manera de capturar una excepción como en un "dominio de aplicación sub".
¿Cómo anfitriones de plugins o aplicaciones que utilizan dominios de aplicación al recinto de seguridad potencialmente dañinas de código, hacer para detener las excepciones no controladas? ¿Es de hecho posible?
Nota: Ya tengo otra solución, la que se describe here. El finalizador incorrecto está en un objeto de larga duración, que parece que solo se recopila durante el apagado, por lo que es suficiente para ocultar este error "falso" del usuario. Aún así, encuentro que esta solución es frágil, ya que ocultará otros errores reales o arriesgará la voladura de mi aplicación si el objeto se recopila anteriormente.
Por qué no se puede capturar la excepción – rerun
La excepción se produce en un Finalizador, que se ejecuta en su propio hilo gestionado por el CLR, por lo que no puedo poner un controlador de excepción en el hilo. Además, esta es una biblioteca de la "herencia, y unmaintaiend componente importante sin código fuente disponible" tipo ... –