Freigeben über


Compilerwarnung (Stufe 1) CS1058

Eine vorangehende catch-Klausel fängt bereits alle Ausnahmen dieses Typs ab. Alle ausgelösten Ausnahmen werden in folgender Ausnahme umschlossen: System.Runtime.CompilerServices.RuntimeWrappedException

Dieses Attribut löst CS1058 aus, wenn ein catch()-Block nach einem catch (System.Exception e)-Block keinen bestimmten Ausnahmetyp aufweist. Die Warnung schlägt vor, dass der catch()-Block keine Ausnahmen erfassen soll.

Ein catch()-Block nach einem catch (System.Exception e)-Block kann Nicht-CLS-Ausnahmen erfassen, wenn 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 erfasst. Weitere Informationen finden Sie unter Vorgehensweise: 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.  
   }  
}