Wirf eine Ausnahme von der Called-Funktion in den Catch-Block der Caller-Funktion

10
%Vor%

Hier im obigen Codebeispiel habe ich zwei Funktionen ReadFile und ReadCSVFile.
In der ReadCSVFile erhalte ich eine Ausnahme vom Typ FileNotFoundExceptioon, der im catch-Block (FileNotFoundException) abgefangen wird. Aber wenn ich diese Ausnahme in den Catch (FileNotFoundException) der ReadFile () - Funktion zu fangen, wird es in den Fang (Ausnahme) -Block statt catch (FileNotFoundException) gefangen. Darüber hinaus wird beim Debuggen der Wert von ex als Object Not Initialized angegeben. Wie kann ich die Ausnahme von der aufgerufenen Funktion in den catch-Block der aufrufenden Funktion werfen, ohne die innere Ausnahme oder zumindest die Ausnahmebedingung zu verlieren?

    
Anubhav Ranjan 11.08.2011, 10:25
quelle

5 Antworten

11

Sie müssen throw; anstelle von throw ex; verwenden:

%Vor%

Außerdem brauchen Sie, wenn Sie nichts anderes in Ihrem catch-Block als retrowing tun, den catch-Block überhaupt nicht:

%Vor%

Implementieren Sie den catch-Block nur, wenn Sie der Ausnahme zusätzliche Informationen hinzufügen möchten, indem Sie eine neue Ausnahme mit der abgefangenen als innere Ausnahme auslösen oder wenn Sie die Ausnahme behandeln möchten. Sie müssen keinen Catch-Block in jeder Methode implementieren, in der eine Ausnahme auftreten kann.

    
PVitt 11.08.2011, 10:30
quelle
1

Verwenden Sie einfach throw in der aufgerufenen Funktion. Überladen Sie keine Fangblöcke mit mehreren Ausnahmetypen. Lass den Anrufer das erledigen.

    
Zenwalker 11.08.2011 10:29
quelle
1

Sie sollten

ersetzen %Vor%

von

%Vor%     
sll 11.08.2011 10:30
quelle
0

Verwenden Sie in der aufgerufenen Funktion einfach throw wie folgt

%Vor%

Wenn nun die Ausnahme auftritt, wird dies von der Anruferfunktion abgefangen.

    
Syeda 11.08.2011 10:34
quelle
0

Ihr Code funktioniert hier gut. Hier klicken Ссылка

    
Zenwalker 11.08.2011 10:46
quelle