a declaración @ 'return return' no puede aparecer en la restricción de bloque try / catch [duplicado]
Esta pregunta ya tiene una respuesta aquí:
¿Por qué no puede aparecer el rendimiento dentro de un bloque de prueba con un catch? 5 respuestasEstos dos métodos son prácticamente iguales, pero el primero no puede compilarse. No puedo entender la razón por la que existe esta restricción
/// <summary>
/// Dynamically loads all document extractors from implementation assemblies into an enumeration
/// </summary>
private static IEnumerable<IDocumentExtractor> EnumerateInstances()
{
IEnumerable<Type> types = EnumerateTypes();
foreach(Type type in types)
{
try
{
IDocumentExtractor extractor = Activator.CreateInstance(type) as IDocumentExtractor;
yield return extractor;
}
catch
{
_log.WarnFormat("Type {0} couldn't be instanced.", type.Name);
}
}
}
Y la versión que realmente se compila sin problemas:
/// <summary>
/// Dynamically loads all document extractors from implementation assemblies into an enumeration
/// </summary>
private static IEnumerable<IDocumentExtractor> EnumerateInstances()
{
IEnumerable<Type> types = EnumerateTypes();
foreach (Type type in types)
{
IDocumentExtractor extractor = null;
try
{
extractor = Activator.CreateInstance(type) as IDocumentExtractor;
}
catch
{
_log.WarnFormat("Type {0} couldn't be instanced.", type.Name);
}
if (extractor != null)
yield return extractor;
}
}