Einzelnen Beitrag anzeigen
Alt 24.12.2003, 09:00   #10
Biri
Hero
 
Registriert seit: 04.09.2001
Beiträge: 894


Standard

@Who-T: Danke !!
auf sowas habe ich nicht gedacht - jetzt ist mir der sinn natürlich klar. (ist wieder eins von den dingen, die einem im nachhinein betrachtet dann voll logisch vorkommen).

Hab noch ein kleines Beispielprogramm geschreiben - der Vollständigkeit halber:

Code:
		//
		// Funktion 1 erzeugt eine Exception, die nicht abgefangen wird
		// in diesem Fall wird dann der Code bei Finally durchgeführt und 
		// die Funktion beendet.
		// 
		// Grund: Es kann sein, dass man nicht alle auftretenden Excetions
		//        in der Funktion bearbeiten kann !
		//
		// Die Exception sollte dann jedoch im Hauptprogramm (bzw. der
		// aufrufenden Funktion abgefangen werden.
		//
		static public void funktion1()
		{
			try 
			{
				MessageBox.Show("Try - Funktion 1");
				
				// nach diesem throw (der in der Fu. nicht verarbeitet wird),
				// wird sofort der "finally" Zweig (und nichts sonst)
				// ausgeführt
				throw new NullReferenceException();
			}
			catch(IOException ex) 
			{
				MessageBox.Show("IO-Excpetion caught - Funktion 1"); 
			}
			finally 
			{
				MessageBox.Show("Finally Block - Funktion 1");
			}

			MessageBox.Show("Ende der Funktion 1");
		}


		//
		// In dieser Funktion wird die "Funktino 1" aufgerufen und
		// die Exceptions, die in der Funktion nicht behandlet werden, behandelt
		//
		private void button1_Click(object sender, System.EventArgs e)
		{
			try 
			{
				MessageBox.Show("Try der aufrufenden Funktion");
				funktion1();
			}
			catch (NullReferenceException ex) 
			{
				MessageBox.Show ("NullReferenceException caught - aufrufende Funktion");
			}
			// Hier werden ALLE Exceptions verarbeitet
			catch (Exception ex) 
			{
				MessageBox.Show("Exception caught - aufrufende Funktion");
			}
			finally 
			{
				MessageBox.Show ("Finally - aufrufende Funktion");
			}

			MessageBox.Show ("Ende - aufrufende Funktion");
		}
Ausgabe:
--------
Try der aufrufenden Funktion
Try - Funktion 1
Finally Block - Funktion 1
NullReferenceException caught - aufrufende Funktion
Finally - aufrufende Funktion
Ende - aufrufende Funktion


Danke an alle + schöne, erholsame Feiertage !
-hannes
Biri ist offline   Mit Zitat antworten