Freigeben über


Compilerwarnung (Stufe 1) CS1058

Aktualisiert: November 2007

Fehlermeldung

Eine vorherige catch-Klausel hat bereits alle Ausnahmen abgefangen. Alle ausgelösten Ausnahmen werden in eine System.Runtime.CompilerServices.RuntimeWrappedException eingebunden.
A previous catch clause already catches all exceptions. All exceptions thrown will be wrapped in a System.Runtime.CompilerServices.RuntimeWrappedException

Dieses Attribut löst die Warnung CS1058 aus, wenn ein catch()-Block über keinen angegebenen Ausnahmetyp nach einem catch (System.Exception e)-Block verfügt. Die Warnung besagt, dass der catch()-Block keine Ausnahmen abfängt.

Ein catch()-Block nach einem catch (System.Exception e)-Block kann Nicht-CLS-Ausnahmen abfangen, wenn das RuntimeCompatibilityAttribute in der Datei AssemblyInfo.cs auf false festgelegt ist: [assembly: RuntimeCompatibilityAttribute(WrapNonExceptionThrows = false)]. Wenn dieses Attribut nicht explizit auf false festgelegt ist, werden alle ausgelösten Nicht-CLS-Ausnahmen als Ausnahmen eingebunden und vom catch (System.Exception e)-Block abgefangen. Weitere Informationen finden Sie unter Gewusst wie: Abfangen einer Nicht-CLS-Ausnahme.

Beispiel

Im folgenden Beispiel wird CS1058 generiert.

// 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.
   }
}