Nachtrag: Es ist immer wieder, was ich schon immer predige: Gescheite Fehlerbehandlung. Hilft nicht nur den Anwender, sondern auch dem Entwickler. Ohne Fehlerbehandlung kann dir der Anwender nur sagen: "Geht nicht." Mit Fehlerbehandlung, kann er dir zumindest die Fehlermeldung nennen.
Stichwort: Defensiv programmieren. Und immer an Murphy denken.