ACTUALIZADO: suponiendo C# 6, lo más probable es que su caso se puede expresar como un filtro de excepción. Este es el enfoque ideal desde una perspectiva de rendimiento suponiendo que el requisito se puede expresar en términos de la misma, por ejemplo:
try
{
}
catch (Web2PDFException ex) when (ex.Code == 52)
{
}
Suponiendo C# < 6, el más eficiente es coger un tipo específico Exception
y no la manipulación basado en eso. Cualquier cajón de sastre de manipulación se puede hacer por separado
try
{
}
catch (Web2PDFException ex)
{
}
o
try
{
}
catch (Web2PDFException ex)
{
}
catch (Exception ex)
{
}
o (si es necesario escribir un manejador en general - que es generalmente una mala idea, pero si está seguro de que es mejor para usted, usted puede estar seguro):
if(err is Web2PDFException)
{
}
o (en algunos casos si es necesario hacer algunas cosas más compleja jerarquía de tipos que no puede ser expresado con is
)
if(err.GetType().IsAssignableFrom(typeof(Web2PDFException)))
{
}
o cambiar a VB.NET o C# y utilizar
is
o
Type.IsAssignableFrom
en Filtros de excepción
si (err es Web2PDFException) es que necesitaba :) – Tomas
Para utilizar el " es "operador que no necesita cambiar a VB.NET –
@BeowulfOF: lo sé, pero si solo está tratando de filtrar según los tipos, es decir, algún tipo de captura condicional, etc., puede ser útil usar un es * en un filtro de excepción en lugar de un bloque catch * - puede ser una vía de aproximación que funcione. Mi sugerencia inicial (y todavía está en la respuesta) es una está en el bloque catch. En pocas palabras, dado que usar un 'es' es normalmente un mal olor, también podríamos tener una larga lista de posibles soluciones y dejar que Tomas elija lo que más le convenga en su contexto específico. Pero sí, es poco probable. –