Sdílet prostřednictvím


Upozornění kompilátoru (úroveň 1) CS1058

Předchozí klauzule catch již zachytí všechny výjimky. Všechny vyvolané výjimky budou zabaleny v system.Runtime.CompilerServices.RuntimeWrappedException

Tento atribut způsobí CS1058, pokud catch() blok nemá po bloku žádný zadaný typ catch (System.Exception e) výjimky. Upozornění doporučuje, aby catch() blok nezachytil žádné výjimky.

Blok catch() za catch (System.Exception e) blokem může zachytit výjimky jiné než CLS, pokud RuntimeCompatibilityAttribute je nastavena na false v souboru AssemblyInfo.cs: [assembly: RuntimeCompatibilityAttribute(WrapNonExceptionThrows = false)]. Pokud tento atribut není explicitně nastaven na false, všechny vyvolané výjimky bez CLS jsou zabaleny jako Výjimky a catch (System.Exception e) blok je zachytí. Další informace naleznete v tématu Jak zachytit výjimku jiného typu než CLS.

Příklad

Následující příklad vygeneruje 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.  
   }  
}