| 

.NET C# Java Javascript Exception

2
In der regel ist es schwierig in einem try-catch-Block zu einer fehlerauslösenden Anweisung zurückzuspringen. In Visual Basic lässt sich das relativ einfach mit der Goto-Sprunganweisung realisieren (auch wenn die Syntax sicherlich nicht zur Verwendung empfiehlt):

Retry:
Try
Dim b As Byte = "289"
Catch ex As Exception
GoTo Retry
End Try
...


In Java bringt die folgende Form der Kodierung keinen Erfolg, da Goto zwar als Schlsselwort definiert ist, selbst aber keine Funktion hat.

retry:
try
{

}
catch (…)
{

goto retry
}


Gibt es einen anderen Weg um nach dem erkannten Fehler an die Ausgangsposition zurückzukehren (z.B. weenn eine fehlerhafte Werteingabe in einem Dialog zum Auslösen des Fehlers geführt hat und um dann den Eingabewert erneut abzufragen? Oder gibt es eine alternative Rücksprungfunktion, die ich übersehen habe?
02.05.2012
ztdep 1 1 1
6
Du solltest vielleicht noch einmal Dein Konzept überdenken. Eine Exception ist eine Exception (= Ausnahme) und sollte auch eine "Ausnahme" bleiben. Eine einfache Validierung einer Usereingabe sollte nicht gleich eine Exception auslösen?!
Xantiva 02.05.2012
1 Antwort
3
ich schließe mich der Meinung von Xantiva an, aber wenn du so etwas implementieren willst könntest du dies mit einer while-Schleife ohne goto's lösen:

bool retry = true
while(retry)
{
try
{
...
retry = false;
}
catch(MyException e)
{
...
}
catch(Exception e)
{
...
retry = false
}
}


Die Verwendung von "MyException" soll darauf hindeuten, dass dieses Konzept natürlich nur dann funktioniert, wenn ich die Exceptions, welche einen Retry erlauben, explizit angebe. Ansonsten könnte das Programm in eine Endlosschleife laufen.
02.05.2012
luedi 2,2k 1 9
1
Um der genannten Endlosschleife entgegen zu wirken würde sich auch ein Zähler anbieten... nach 3 mal dem selben Fehler sollte man abbrechen, da ein Erfolg wohl fürs Erste nicht garantiert werden kann.
Karill Endusa 02.05.2012

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH