Compiler Warning (level 1) CS1058

Eine vorherige catch-Klausel hat bereits alle Ausnahmen abgefangen.Alle ausgelösten Ausnahmen werden mit einer System.Runtime.CompilerServices.RuntimeWrappedException umschlossen.

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