Java >> Java tutorial >  >> Tag >> throw

Hvornår skal vi bruge throws nøgleord i Java?

  1. Det handler om, hvordan man kommer sig efter en undtagelse. Hvad skal f.eks. java.lang.File gøre, når filen ikke findes? Da den ikke ved, hvad der ville være bedst for den, der kalder, lader den den, der kalder, håndtere denne sag
  2. Selvfølgelig kan du håndtere undtagelser i dit modul, hvis det er klart, hvordan nævnte undtagelser skal håndteres. Hvis håndteringen er afhængig af den opkaldte eller kontekst, lad den kaldende funktion bestemme
  3. Bør være klar nu

Lad mig bruge FileInputStream::new smider FileNotFoundException som et eksempel for at afklare din misforståelse.

Så for eksempel har vi en kode som denne:

FileInputStream fis = new FileInputStream("/some/path/to/file.txt");

Det kan give en FileNotFoundException , og du siger det,

FileInputStream ved åbenbart, at den kommer til at kaste en FileNotFoundException , så hvorfor klarer den det ikke selv?

Fordi FileInputStream ved ikke hvordan at håndtere undtagelsen!

Afhængigt af situationen er der mange måder at håndtere en FileNotFoundException på :

  • Hvis filstien kommer fra brugerinput, kan du bede brugeren om at indtaste en anden filsti
  • Du viser muligvis en fejlmeddelelse
  • Du gør måske ikke noget og lader det gå ned

Alt ovenstående kunne være helt fornuftige muligheder afhængigt af situationen. Hvordan er en FileInputStream vil vide om din situation? Det er det ikke!

Det er derfor, det siger, med en throws klausul:

Jeg smider disse undtagelser, klare det selv.


Java tag