Fehlernummer

Ich hab das jetzt so gelöst! (siehe code)

Code:
namespace MyErrorHandl
{
	public class MyErrorExceptions
	{
		public int ErrNumber(Exception ex)
		{
			if(ex is UnauthorizedAccessException) return 1;
                        //Hier ergänzungen hinzufügen, sollten die 99 nicht reichen kann man das ändern
			return 99;
		}
	}
}
 
Ok, sieht schon gut aus.
Aber es treten doch bestimmt nicht immer UnauthorizedAccessExceptions an der gleichen stelle auf.

// Edit: Beispiel war Falsch, steht jetzt im [post=1109424]16. Post[/post].

MfG, cosmo
 
Zuletzt bearbeitet:
OMG.
Gewöhn dir einfach an mit Exceptions zu arbeiten und vergiss es einfach, da schmutzige Dinge aus der alten Welt nachzubauen. Das hat doch mit OOP nix zu tun. *graus*
 
Mist hab mich verzettelt. Das anwendunsbeispiel sollte so aussehen:
Code:
try{
	throw new UnauthorizedAccessException();
}catch ( Exception ex ) {
	MessageBox.Show( new MyErrorExceptions( 24, "C# Exception Test", ex ).ToString() );
}
Wen das jetzt nicht OOP ist, hab ich das Thema überhaupt gar nicht verstanden.
 
Nein, würd ich so auch nicht machen.

Schau, eigene Exceptions zahlen sich nur aus, wenn man Exceptions in eigene Klassen einbaut. In einem catch eine neue Exception zu instanzieren bringt Overhead wo keiner sein müsste.
 
Achso.

Der OOP wegen erbt die Klasse von Exception, damit man einfach auf die Eigenschaften zugreifen kann.
Bringt hier aber nichts weil wir den Typ als Basis nie brauchen, sondern nur Information darüber haben wollen.
Es währe es jetzt also besser ein Member vom Typ Exception zu verwenden.
Code:
namespace MyErrorHandl
{
	public class MyErrorExceptions
	{
		private Exception _Exception;
		private int _ProcedureCode = 0; // Der Code der dem Vorgang im Programm zugeordnet ist.

		public MyErrorExceptions( int ProcedureCode, Exception exception ) {
			_Exception = exception;
			_ProcedureCode = ProcedureCode;
		}
		public int ErrorCode {
			get {
				if( _Exception is UnauthorizedAccessException )
					return 1;
				//Hier ergänzungen hinzufügen, sollten die 99 nicht reichen kann man das ändern
				return 99;
			}
		}
		public string Message {
			get {
				return _Exception.Message;
			}
		}
		public override string ToString() {
			return string.Format( "Es wurde folgende Ausnahme ausgelöst: {0}\nErrorCode: {1}\nAusgelöst von Vorgang: {2}", _Exception.Message, this.ErrorCode, this._ProcedureCode );
		}
	}
}
Code:
try{
	throw new UnauthorizedAccessException();
}catch ( Exception ex ) {
	MessageBox.Show( new MyErrorExceptions( 24, ex ).ToString() );
}
 
@ Norbert Eder: Hättest du einen besseren vorschlag wie ich mein problem lösen könnte? Weil ich finde die hilfestellung ganz interessant und nützlich!
 
Zuletzt bearbeitet:
Warum empfindest du es als Problem wenn die Exception keine Nummern haben? Durch den Typ der Exception weisst du ja auch schon über die Art des Fehlers bescheid.
Wenn du eine eigene Fehlermeldung ausgeben willst kannst ja diese auch anhand des Typs bestimmen. Und der Text in der Message Eigenschaft ist auch nicht wirklich (immer) "kryptisch".

MfG,
Alex
 
Naja, aber was wäre dir lieber? Wenn du "Zugriffsverletzung aufgrund einer ungültigen freigabe..." stehen hast, oder wenn eine meldung kommt, "Sie können nicht auf das Netzlaufwerk zugreifen, weil sie dazu nicht berechtigt sind!"? Und dann frag noch jemand der eigentlich nur enduser ist, und damit zurechtkommen muss! :)
 
Zurück