Compilador CS1058 de aviso (nível 1)

Mensagem de erro

Cláusula catch anterior já captura todas as exceções.Todas as exceções lançadas irão ser empacotadas em uma sistema.tempo de execução.CompilerServices.RuntimeWrappedException

Esse atributo faz com que CS1058 se um catch() bloco não tem nenhuma exceção especificada digite após um catch (System.Exception e) bloco. O aviso informa que o catch() bloco não irá capturar todas as exceções.

A catch() Bloquear após um catch (System.Exception e) bloco pode capturar exceções não-CLS se a RuntimeCompatibilityAttribute é conjunto para false no arquivo AssemblyInfo.cs: [assembly: RuntimeCompatibilityAttribute(WrapNonExceptionThrows = false)].Se este atributo não é definido explicitamente sistema autônomo false, todas sistema autônomo exceções geradas não-CLS são encapsuladas sistema autônomo exceções e o catch (System.Exception e) Bloco de captura-los. Para obter mais informações, consulte Como: Capturar um não-CLS exceção.

Exemplo

O exemplo a seguir gera CS1058.

// CS1058.cs
// CS1058 expected
using System.Runtime.CompilerServices;

// the following attribute is set to true by default in the C# compiler
// set to false in your source code to resolve CS1058
[assembly: RuntimeCompatibilityAttribute(WrapNonExceptionThrows = true)]

class TestClass 
{
   static void Main() 
   {
      try {}

      catch (System.Exception e) { 
         System. Console.WriteLine("Caught exception {0}", e);
      }

      catch {}   // CS1058. This line will never be reached.
   }
}