2017-01-25 2 views
3

In C# kann ich eine Überlauf Ausnahme werfen:Wie wird eine Unterlauf-Ausnahme ausgelöst?

throw new System.OverflowException("Cannot push onto a full stack."); 

Wie kann ich eine Unterschreitung Ausnahme auslösen?

throw new System.UnderflowException("Cannot pop from an empty stack."); 

Es sieht nicht wie UnderflowException ist eine Methode der System.

+2

Wäre das nicht technisch immer noch eine OverflowException, wie Sie versuchen, von einem Index zuzugreifen, der größer als verfügbar ist? – Staeff

+0

@Staeff Nein, es versucht, auf den Index "-1" zuzugreifen – theonlygusti

+1

In diesem Fall sollten Sie eigene Ausnahmen erstellen – BWA

Antwort

6

Es gibt keine UnderflowException. Wenn Sie wie folgt vorgehen:

var stack = new Stack(); 
stack.Push(1); 
var x1 = stack.Pop(); 
var x2 = stack.Pop(); 

Sie werden InvalidOperationException erhalten:

Stapel leer.

Aber Sie völlig frei, Ihre eigene Exception Klasse zu erstellen:

public class UnderflowException : Exception 
{ 
    public UnderflowException(string message): base(message) 
    {   
    } 
} 

und es aus, wenn Sie brauchen:

throw new UnderflowException("Could not pop from empty stack"); 
+0

Ich muss meine eigene Implementierung eines Stacks für die CS-Klasse erstellen. Mein Lehrer will, dass ich Unterlauf- und Überlauf-Ausnahmen erstelle. – theonlygusti

+0

@theonlygusti Das ist eine Art Blödsinn, aber dann erstelle sie einfach selbst. – Staeff

+0

@Staeff Ich weiß, das ist irgendwie dumm. Ich habe mit meinem Lehrer darüber gesprochen, aber sie ist hartnäckig – theonlygusti

1

Sie können nur Ihre eigene leere Ausnahme erstellen und werfen:

public class UnderflowException : Exception 
{ 

} 

Dann in Ihrem func :

+0

http://Stackoverflow.com/a/41849282/4386651 möchten – devRicher

Verwandte Themen