Exportieren (0) Drucken
Alle erweitern
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

RegexMatchTimeoutException-Klasse

.NET Framework 4.5

Die Ausnahme, die ausgelöst wird, wenn die Ausführungszeit eines Mustervergleichs für einen regulären Ausdruck das Timeoutintervall überschreitet.

System.Object
  System.Exception
    System.SystemException
      System.TimeoutException
        System.Text.RegularExpressions.RegexMatchTimeoutException

Namespace:  System.Text.RegularExpressions
Assembly:  System (in System.dll)

[SerializableAttribute]
public class RegexMatchTimeoutException : TimeoutException, 
	ISerializable

Der RegexMatchTimeoutException-Typ macht die folgenden Member verfügbar.

  NameBeschreibung
Öffentliche MethodeUnterstützt in .NET für Windows Store-AppsRegexMatchTimeoutException()Initialisiert eine neue Instanz der RegexMatchTimeoutException-Klasse mit einer vom System bereitgestellten Meldung.
Öffentliche MethodeUnterstützt in .NET für Windows Store-AppsRegexMatchTimeoutException(String)Initialisiert eine neue Instanz der RegexMatchTimeoutException-Klasse mit der angegebenen Meldungszeichenfolge.
Geschützte MethodeRegexMatchTimeoutException(SerializationInfo, StreamingContext)Initialisiert eine neue Instanz der RegexMatchTimeoutException-Klasse mit serialisierten Daten.
Öffentliche MethodeUnterstützt in .NET für Windows Store-AppsRegexMatchTimeoutException(String, Exception)Initialisiert eine neue Instanz der RegexMatchTimeoutException-Klasse mit einer angegebenen Fehlermeldung und einem Verweis auf die innere Ausnahme, die diese Ausnahme ausgelöst hat.
Öffentliche MethodeUnterstützt in .NET für Windows Store-AppsRegexMatchTimeoutException(String, String, TimeSpan)Initialisiert eine neue Instanz der RegexMatchTimeoutException-Klasse mit Informationen über das Muster eines regulären Ausdrucks, den Eingabetext und das Timeoutintervall.
Zum Seitenanfang

  NameBeschreibung
Öffentliche EigenschaftUnterstützt in .NET für Windows Store-AppsDataRuft eine Auflistung von Schlüssel-Wert-Paaren ab, die zusätzliche benutzerdefinierte Informationen zu der Ausnahme bereitstellen. (Von Exception geerbt.)
Öffentliche EigenschaftUnterstützt in .NET für Windows Store-AppsHelpLinkRuft einen Link zur Hilfedatei ab, die dieser Ausnahme zugeordnet ist, oder legt einen Link fest. (Von Exception geerbt.)
Öffentliche EigenschaftUnterstützt in .NET für Windows Store-AppsHResultRuft HRESULT ab oder legt HRESULT fest. Dies ist ein codierter Wert, der einer bestimmten Ausnahme zugeordnet ist. (Von Exception geerbt.)
Öffentliche EigenschaftUnterstützt in .NET für Windows Store-AppsInnerExceptionRuft die Exception-Instanz ab, die die aktuelle Ausnahme verursachte. (Von Exception geerbt.)
Öffentliche EigenschaftUnterstützt in .NET für Windows Store-AppsInputRuft den Eingabetext ab, den das Modul für reguläre Ausdrücke verarbeitet hat, als der Timeout aufgetreten ist.
Öffentliche EigenschaftUnterstützt in .NET für Windows Store-AppsMatchTimeoutRuft das Timeoutintervall für eine Übereinstimmung für einen regulären Ausdruck ab.
Öffentliche EigenschaftUnterstützt in .NET für Windows Store-AppsMessageRuft eine Meldung ab, die die aktuelle Ausnahme beschreibt. (Von Exception geerbt.)
Öffentliche EigenschaftUnterstützt in .NET für Windows Store-AppsPatternRuft das Muster eines regulären Ausdrucks ab, das im entsprechenden Vorgang verwendet wurde, als das Timeout auftrat.
Öffentliche EigenschaftUnterstützt in .NET für Windows Store-AppsSourceGibt den Namen der Anwendung oder des Objekts zurück, das den Fehler verursacht hat, oder legt diesen fest. (Von Exception geerbt.)
Öffentliche EigenschaftUnterstützt in .NET für Windows Store-AppsStackTraceRuft eine Zeichenfolgendarstellung der unmittelbaren Frames in der Aufrufliste ab. (Von Exception geerbt.)
Öffentliche EigenschaftTargetSiteRuft die Methode ab, die die aktuelle Ausnahme auslöst. (Von Exception geerbt.)
Zum Seitenanfang

  NameBeschreibung
Öffentliche MethodeUnterstützt in .NET für Windows Store-AppsEquals(Object)Bestimmt, ob das angegebene Objekt mit dem aktuellen Objekt identisch ist. (Von Object geerbt.)
Geschützte MethodeUnterstützt in .NET für Windows Store-AppsFinalize Gibt einem Objekt Gelegenheit, Ressourcen freizugeben und andere Bereinigungen durchzuführen, bevor es von der Garbage Collection freigegeben wird. (Von Object geerbt.)
Öffentliche MethodeUnterstützt in .NET für Windows Store-AppsGetBaseExceptionGibt beim Überschreiben in einer abgeleiteten Klasse eine Exception zurück, die die ursprüngliche Ursache für eine oder mehrere nachfolgende Ausnahmen ist. (Von Exception geerbt.)
Öffentliche MethodeUnterstützt in .NET für Windows Store-AppsGetHashCodeFungiert als die Standardhashfunktion. (Von Object geerbt.)
Öffentliche MethodeGetObjectDataLegt beim Überschreiben in einer abgeleiteten Klasse die SerializationInfo mit Informationen über die Ausnahme fest. (Von Exception geerbt.)
Öffentliche MethodeGetTypeRuft den Laufzeittyp der aktuellen Instanz ab. (Von Exception geerbt.)
Geschützte MethodeUnterstützt in .NET für Windows Store-AppsMemberwiseCloneErstellt eine flache Kopie des aktuellen Object. (Von Object geerbt.)
Öffentliche MethodeUnterstützt in .NET für Windows Store-AppsToStringErstellt eine Zeichenfolgenentsprechung der aktuellen Ausnahme und gibt diese zurück. (Von Exception geerbt.)
Zum Seitenanfang

  NameBeschreibung
Geschütztes EreignisSerializeObjectStateTritt auf, wenn eine Ausnahme serialisiert wird, um ein Ausnahmezustandsobjekt zu erstellen, das serialisierte Daten für die Ausnahme enthält. (Von Exception geerbt.)
Zum Seitenanfang

  NameBeschreibung
Explizite SchnittstellenimplementierungPrivate MethodeISerializable.GetObjectDataFüllt ein SerializationInfo-Objekt mit den Daten, die zum Serialisieren eines RegexMatchTimeoutException-Objekts erforderlich sind.
Zum Seitenanfang

Das Vorhandensein einer RegexMatchTimeoutException - Ausnahme gibt im Allgemeinen eine der folgenden Bedingungen angezeigt:

  • Das Modul für reguläre Ausdrücke verfolgt übermäßig zurück, das versucht, den Eingabetext an das Muster eines regulären Ausdrucks an.

  • Das Timeoutintervall ist zu niedrig festgelegt wurde, Maschinenbelastung besonders hohen angegeben.

Die Methode, in der ein Ausnahmehandler eine Ausnahme behandelt, hängt von der Ursache der Ausnahme überein:

  • Wenn das Timeout der eine übermäßige Rückverfolgung entsteht, sollte der Ausnahmehandler den Vorgang abbrechen, die Eingabe zu und den Benutzer zu informieren, dass ein Timeout in der Methode für Musterübereinstimmungen mit regulären Ausdrücken ist aufgetreten. Wenn möglich, Daten über das Muster eines regulären Ausdrucks, das von der Pattern-Eigenschaft verfügbar ist, und die Eingabe, die eine übermäßige Rückverfolgung verursachten, die von der Input-Eigenschaft verfügbar ist, sollte protokolliert werden, dass das Problem überprüft werden kann und das Muster eines regulären Ausdrucks geändert werden. Timeouts auf eine übermäßige Rückverfolgung sind immer reproduzierbar.

  • Wenn das Timeout von der Einstellung der TIMEOUTschwellenwert zu niedrig sich ergibt, können Sie das Timeoutintervall erhöhen und den entsprechenden Vorgang erneut versuchen. Das aktuelle Timeoutintervall ist von der MatchTimeout-Eigenschaft verfügbar. Wenn RegexMatchTimeoutException eine Ausnahme ausgelöst wird, verfügt das Modul für reguläre Ausdrücke den Zustand beibehalten, sodass alle zukünftigen Aufrufe das gleiche Ergebnis zurückgeben, wenn die Ausnahme nicht aufgetreten ist. Das empfohlene Muster ist, auf ein in, zufälliges Zeitintervalls zu warten, nachdem die Ausnahme ausgelöst, bevor erneut die entsprechende Methode aufruft. Dies kann mehrmals wiederholt werden. Allerdings sollte die Anzahl von Wiederholungen klein sein, falls das Timeout durch eine übermäßige Rückverfolgung verursacht wird.

Das Beispiel im nächsten Abschnitt veranschaulicht beide Verfahren zum Behandeln von RegexMatchTimeoutException.

Das folgende Beispiel zeigt zwei Methoden zum Behandeln der RegexMatchTimeoutException Ausnahme. Eine Konstante, deren Wert zwei Sekunden, definiert das maximale Timeoutintervall. Die Regex.IsMatch(String, String, RegexOptions, TimeSpan) methode wird zuerst mit ein Timeoutintervall von einer Sekunde aufgerufen. Jede RegexMatchTimeoutException Ausnahme veranlasst das Timeoutintervall, bis um ein zweites verbessert werden und führt zu einem anderen Aufruf der Regex.IsMatch methode, wenn das aktuelle Timeoutintervall weniger ist, als das maximale Timeoutintervall. Wenn das aktuelle Timeoutintervall das maximale Timeoutintervall überschreitet, schreibt der Ausnahmehandler Informationen ins Ereignisprotokoll und bricht Verarbeitung des regulären Ausdrucks.


using System;
using System.ComponentModel;
using System.Diagnostics;
using System.Security;
using System.Text.RegularExpressions;
using System.Threading;

public class Example
{
   const int MaxTimeoutInSeconds = 2;

   public static void Main()
   {
      TimeSpan timeout = new TimeSpan(0, 0, 1);
      string input = "aaaaaaaaaaaaaaaaaaaaaa>";
      if (ValidateInput(input, timeout))
         // Perform some operation with valid input string.
         Console.WriteLine("'{0}' is a valid string.", input); 
   } 

   private static bool ValidateInput(string input, TimeSpan timeout)
   {
      string pattern = "(a+)+$";      
      try {
         return Regex.IsMatch(input, pattern, 
                              RegexOptions.IgnoreCase, timeout);
      }
      catch (RegexMatchTimeoutException e) {
         // Increase the timeout interval and retry.
         timeout = timeout.Add(new TimeSpan(0, 0, 1));
         Console.WriteLine("Changing the timeout interval to {0}", 
                           timeout); 
         if (timeout.TotalSeconds <= MaxTimeoutInSeconds) {
            // Pause for a short period.
            Thread.Sleep(250);
            return ValidateInput(input, timeout);
         }   
         else {
            Console.WriteLine("Timeout interval of {0} exceeded.", 
                              timeout);
            // Write to event log named RegexTimeouts
            try {
               if (! EventLog.SourceExists("RegexTimeouts"))
                  EventLog.CreateEventSource("RegexTimeouts", "RegexTimeouts");

               EventLog log = new EventLog("RegexTimeouts");
               log.Source = "RegexTimeouts";
               string msg = String.Format("Timeout after {0} matching '{1}' with '{2}.",
                                          e.MatchTimeout, e.Input, e.Pattern);
               log.WriteEntry(msg, EventLogEntryType.Error);
            }
            // Do nothing to handle the exceptions.
            catch (SecurityException) { }
            catch (InvalidOperationException) { }
            catch (Win32Exception) { }
            return false;
         }   
      }
   }
}
// The example writes to the event log and also displays the following output:
//       Changing the timeout interval to 00:00:02
//       Changing the timeout interval to 00:00:03
//       Timeout interval of 00:00:03 exceeded.


.NET Framework

Unterstützt in: 4.5.2, 4.5.1, 4.5

.NET für Windows Store-Apps

Unterstützt in: Windows 8

.NET für Windows Phone-Apps

Unterstützt in: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Alle öffentlichen static (Shared in Visual Basic)-Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2015 Microsoft