Documente Academic
Documente Profesional
Documente Cultură
Prezentare 8:
Exceptii
PROGRAMARE ORIENTATA
OBIECT
2020
Tipuri de erori in Java
Exemple: Exemple:
► Lipsa ; ► Variabila null
► Metoda sau variabila ► Downcast incorect
necunoscuta ► Apel incorect de metoda
► Utilizarea unei metode care
nu apartine tipului static al
variabilei
20.11.2020 POO 2
Circumstante exceptionale
/** Rezultat:numarul zecimal reprezentat de s */
int parseInt(String s) { …}
dar daca s este “un text simpatic”?
/** Rezultat: numarul zecimal reprezentat de s sau -1 daca
* s nu reprezinta un numar zecimal */
dar daca s este “-1”?
/** Rezultat: numarul zecimal reprezentat de s
* Preconditie: s reprezinta un numar zecimal */
dar daca s nu respecta uneori preconditia
Trebuie sa tratam cazurile neasteptate
20.11.2020 POO 3
Circumstante exceptionale
/** Rezultat:numarul zecimal reprezentat de s
* Preconditie: s reprezinta un numar zecimal */
int parseInt(String s) { …}
/** Rezultat: “s contine un numar” */
boolean parseableAsInt(String s) { …}
Ar trebui sa scriem:
if (parseableAsInt(unSir) { In realitate
i = parseInt(unSir); De multe ori scrierea codului
} ignora cazurile de eroare.
else { // trateaza eroarea Trebuie sa existe o cale mai
} simpla.
20.11.2020 POO 4
Circumstante exceptionale
20.11.2020 POO 5
Recuperarea din exceptie
20.11.2020 POO 6
Exceptii in Java
Exceptiile sunt instante ale clasei Throwable
@105dc Permite organizarea lor in ierahie
Throwable
“/ cu zero” Throwable probleme care
probleme care nu pot fi
Throwable() Throwable(String) pot fi adresate adresate
getMessage()
Exception Error
Exception
Exception() Exception(String)
RuntimeException
RuntimeException
Runtime…() Run…(String)
ArithmeticException ArithmeticException
Arith…() Arith…(String)
20.11.2020 POO 7
Crearea exceptiilor
20.11.2020 POO 8
De ce exceptii specifice?
20.11.2020 POO 12
Exceptii si stiva apelurilor
20.11.2020 POO 15
Ierarhia de exceptii
Error
Exception
IOError AssertionError …
FileNotFoundE.
probleme care pot fi
EndOfFileE. RuntimeException prevenite prin
codificare corecta
UnsupportedAudioFileE. …
IndexOutOfBoundsE.
… (toate celelalte)
ArithmeticE. ClassCastE.
…
exceptii exceptii
“checked" Exceptii “unchecked"
20.11.2020 POO 16
throws si Checked Exceptions
20.11.2020 POO 19
Clauza finally
20.11.2020 POO 21
Exceptii - restrictii
DEMO
20.11.2020 POO 22
Conversia exceptiilor
try {
//…
} catch(NuStiuCeSaFacCuExceptiaChecked) {
throw new RuntimeException(e);
}
20.11.2020 POO 23
Exceptii - exemplu
Vrem sa definim o metoda de calcul a radacinii patratice care
accepta doar o valoare pozitiva ca argument. Metoda arunca o
exceptie daca argumentul este un numar negativ.
public SQRTException() {
this("SQRT dintr-un numar negativ");
}
}
20.11.2020 POO 24
Exceptii - exemplu
class AltaMate
{
public static double radPatrat(double val) //throws SQRTException
{
if (val < 0)
throw new SQRTException();
else return Math.sqrt(val);
}
}
20.11.2020 POO 25
Exceptii - exemplu