WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 26.11.2007, 12:28   #1
renew
Inventar
 
Registriert seit: 22.10.2000
Alter: 41
Beiträge: 5.552


Standard .NET (1.1) - IOException unterscheiden

Ich habe folgendes Problem in .NET:
ich möchte ein File auf die Platte schreiben und dabei die unterschiedlichen Exceptions abfangen.

Jetzt bekomme ich aber eine IOException wenn die Festplatte voll ist, als auch wenn das File was ich schreiben möchte gerade geöffnet ist.
Nur ex.Message ist unterschiedlich (is ja logisch).

Einen Sting-Vergleich auf ex.message zu machen, um diese beiden Fälle zu unterscheiden ist sehr unsauber, da die message auf einem engl. System ja anders lauten wird.
Nur finde ich beim IOException Objekt auch keine "ID" od. ähnliches wodurch ich solche Unterschiede abfragen könnte.

Gibt es da eine Möglichkeit solche "Unterpunkte" abzufangen - weil es gibt ja auch keine erbende Klasse von IOException die sich mit dem Problem befasst....

herzlichen Dank, mfg renew
renew ist offline   Mit Zitat antworten
Alt 28.11.2007, 08:50   #2
Biri
Hero
 
Registriert seit: 04.09.2001
Beiträge: 894


Standard

hi,

ohne das jetzt näher angeschaut oder getestet zu haben, ich glaub, hier steht etwas zu einem problem: http://www.msdner.com/dev-archive/6/12-39-67117.shtm

fg
hannes
Biri ist offline   Mit Zitat antworten
Alt 28.11.2007, 11:08   #3
renew
Inventar
 
Registriert seit: 22.10.2000
Alter: 41
Beiträge: 5.552


Standard

Hi, herzlichen Dank. Im Prinzip wäre das genau das was ich mir wünsche.
Funkt nur leider nicht (gerade getestet).
Bei mir kommt bei Err.Number 57 - bei File gerade geöffnet als auch bei Disk Full (mit Disk-Quotas simuliert).

Blöde Geschichte...

Und was auch noch spannend wird (falls ich es zum Laufen bekomme) ob die Err.Numbers unter XP die gleichen sind wie unter 2003 Server.
Weil derzeit wird unter XP entwickelt, wird aber im Echt-System auf 2003 Server laufen, bzw. in weiterer Folge unter XP für andere Anwendungen zur Entwicklungszeit als "Library" verwendet.... (die dann auf den 2003 Server deployed werden...)
renew ist offline   Mit Zitat antworten
Alt 28.11.2007, 12:47   #4
Biri
Hero
 
Registriert seit: 04.09.2001
Beiträge: 894


Standard

hi,

ein anderer Ansatz wäre natürlich, das gesammte Execption Konzept zu überdenken. Exception = etwas "Unerwartetes".

Man könnte also, wenn möglich, zuvor gewisse Prüfungen einbauen - Exceptions die man nicht handlen kann, sollte man sowieso weiterreichen - gerade, WENN du eine Library schreibst, die von anderen verwendet wird, sollte man das so machen.

Derjenige, welcher die Library verwendet, muss halt dann entscheiden, wie er mit der Exception umgeht - das ist nicht Aufgabe der Library, denn diese kann ja garnicht wissen, was passieren sollen, wenn Exceptions auftreten.

fg
hannes
Biri ist offline   Mit Zitat antworten
Alt 28.11.2007, 22:10   #5
renew
Inventar
 
Registriert seit: 22.10.2000
Alter: 41
Beiträge: 5.552


Standard

Grundsätzlich natürlich richtig.

Wobei die "verwendende" Anwendung altes ASP ist und meine Klasse daher per COM aufgerufen wird.
Und Fehlerbehandlung in VB (6.0) ist, ähhm, bescheiden.
Daher liefert meine Library nur einen Return-Code (was jetzt passiert ist) und fängt daher schon alle Exceptions ab.
Denn auch die Err-Number bei Fehlerbehandlung per VB6-Code (on error goto) ist nicht brauchbar - da das irgendwelche Nummern sind, das habe ich auch schon ausprobiert.

Aber ich hab beschlossen, dass er einfach damit leben muss, es sind sowieso nur 2 Fälle die man unterscheiden muss. Entweder is die Disk voll (das wird wohl nicht oft vorkommen) od. das File is gerade geöffnet....
renew ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 23:56 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag