Wie Sie wissen, die Datei.Kopieren Sie das geschafft?
Die statische Methode File.Copy(String, String)
keinen Wert zurückgibt. Wie kann ich wissen, programmgesteuert, wenn die Funktion erfolgreich war oder nicht ? Wenn keine Ausnahme geworfen, File.Copy
gut geht. Aber ich Frage nach, wie man "keine Ausnahme" als Bedingung.
Etwas wie dieses:
if(no exception happened){
//my code goes here
}
Edit: ich habe das problem gelöst mit einem einfachen Zähler wie folgt:
int i=0;
try{
File.Copy();
}
catch(e1){
i++;
}
catch(e2){
i++;
}
if(i==0){
//my code goes here
}
Dank für alle Mitwirkenden. Werde ich gehen Sie durch Ihre Antworten die beste zu wählen.
InformationsquelleAutor der Frage Aan | 2011-10-29
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn der Betrieb nicht werfen eine Ausnahme, es bedeutet, dass es erfolgreich war. Die Liste der möglichen Ausnahmen ist verfügbar hier :
InformationsquelleAutor der Antwort Nasreddine
Fehler
Wenn die Methode nicht eine Ausnahme werfen, sind keine Fehler aufgetreten. Die Methode war in der Lage, um den job zu erledigen, versprach er es tun würde, so wird es aus dem Weg gehen, und nicht versuchen, wieder eine Art status-code. Sie nicht brauchen, um zu überprüfen, einen status-code, weil Sie wissen, dass es Ihr gelungen ist.
Wenn die Methode fehlschlägt, wird der Kopiervorgang ist, wird eine Ausnahme geworfen werden. In diesem Fall wird die Methode war nicht in der Lage, um den job zu erledigen, versprach er es tun würde, was bedeutet, dass etwas seltsam ist (in Ausnahmefällen) passiert, so wird eine Ausnahme geworfen erhält. Da eine exception geworfen wird, sind Sie gezwungen mit ihm zu beschäftigen, oder das Programm explodiert. So gibt es keinen Punkt in der Prüfung für einen status-code. Sie konnte nicht schreiben code, der in der Lage wäre zu Lesen, dass status-code ohnehin nicht, da der status code überprüfen würde nie erreicht werden. Code flow gehen würde, um die
catch
block, oder zur Beendigung des Programms.Diese Konzepte sind die Grundlage für die Fehlerbehandlung mit exceptions.
Behandlung von exceptions
Es sei denn, Sie müssen, und haben einige vernünftige Weg, um erholen sich von der Ausnahme, die dann nicht mit Ihnen umgehen. Lassen Sie Ihr Programm sprengen. Dadurch wird es viel einfacher, Fehler zu finden, die in Ihrem code aus in der wildnis, da eine unbehandelte Ausnahme erzeugt einen stack-trace, der wird Ihnen genau sagen, welche Teil des Programms blies, und wie der code kam.
Wenn Sie einen vernünftigen Weg, sich zu erholen (z.B. einfach das display eine Fehlermeldung an den Benutzer und den Vorgang zu wiederholen, oder Sie lassen die Eingabe eines anderen Parameters), dann Sie können schreiben Sie eine
try
/catch
block. Schreiben Sie Ihren code, könnte eine exception werfen, in dertry
block, und schreiben Sie Ihren Wiederherstellungs-code in diecatch
block.Beachten Sie, dass Sie sollten niemals fangen die base
Exception
geben, und sollten stattdessen fangen die spezifische abgeleitete exception-Typen, die Sie behandeln können (z.B.FileNotFoundException
). Dies macht Sinn, da kann man wohl nicht schreiben code, der wird erfolgreich wiederherstellen aus einerOutOfMemoryException
und dass Ausnahme kann geworfen, an jedem Punkt in Ihrem code. Wenn Sie fangenException
dann sind Sie code schreiben, der versucht zu verarbeiten allesnicht nur die Ausnahmen, die Sie interessiert sind in.Abschluss
File.Copy
ist ein synchroner Vorgang. So, nachdem die Methode abgeschlossen ist, wird dann das eigentliche kopieren abgeschlossen ist.Dies bedeutet, dass Sie können schreiben, eine Zeile code unmittelbar nach der Zeile kopieren. Und dieser code kann erwarten, dass die Datei da sein, für Sie vollständig kopiert, und für Sie zugänglich zu sein.
InformationsquelleAutor der Antwort Merlyn Morgan-Graham
Wenn die Methode nicht eine Ausnahme werfen, bedeutet es, dass es gelungen ist.
InformationsquelleAutor der Antwort Darin Dimitrov
wenn es keine Ausnahme, dass es bedeutet, dass die Datei Erfolg vollständig kopiert ...
InformationsquelleAutor der Antwort Enigma State
Obwohl ich nicht weiß, was situation, die Sie in sind , aber ich habe etwas ähnliche situation, wo ich Dateien Kopieren und notwendig zu wissen, ob es gelang, Wie ich konnte nicht finden, alles, was nützlich .NET API ist meine einzige Möglichkeit war, es weiter zu versuchen, bis er erfolgreich ist (versuchen Sie es nicht. mal) z.B. im folgenden code habe ich aufgeben müssen, nach 5 versuchen
InformationsquelleAutor der Antwort Surjit Samra