Метод
Code: Select all
[Obfuscation( Feature = "ultra", Exclude = false )]
public static DeleteDirectory( string path ) {
try {
Directory.Delete( path, true );
}
// fix {
catch( TargetInvocationException ex ) when( ex.InnerException is DirectoryNotFoundException ) {
}
// } fix
catch( DirectoryNotFoundException ) {
}
}
- в режиме
Feature = "ultra"
или
Feature = "virtualization"
вместо DirectoryNotFoundException выбрасывается TargetInvocationException
с InnerException is DirectoryNotFoundException
- в режиме
Feature = "mutation"
работает корректно, т.е. выбрасывается DirectoryNotFoundException
Проблему обошёл добавлением обработчика
catch( TargetInvocationException ex ) when( ex.InnerException is DirectoryNotFoundException ) {
return new List<long>();
}
Однако, хотелось бы реализовать обработку более корректно.
Или я что-то делаю неверно?
Интересно, что, если реализовать метод так
Code: Select all
[Obfuscation( Feature = "ultra", Exclude = false )]
public static async Task DeleteDirectory( string path, CancellationToken token ) {
try {
Directory.Delete( path, true );
}
catch( DirectoryNotFoundException ) {
}
await Task.CompletedTask;
}
то эффект не проявляется.