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