Cześć. Uczę się o wyjątkach i mam pytanie.
Wyjątek możemy złapać na dwa sposoby albo za pomocą throws albo za pomocą try/catch.
I tutaj pada pytanie, czy jeżeli dodam w sygnaturze throws to to będzie znaczyło, że jeżeli gdziekolwiek w metodzie wypadnie taki wyjątek to metoda go obsłuży? A jeżeli obsłuży to w jaki sposób?
Czy jeżeli dodam throws gdzieś w metodzie to czy ja sam muszę go obsłużyć w jakiś sposób za pomocą try/catch? Czy wystarczy, ze dodam throws i w każdym wywołaniu tej metody w innej metodzie też muszę dodać throws ? Pytam dlatego, że w internecie wyczytałem, że :
Throws keyword can be placed in the method declaration. It denotes which exceptions can be thrown from this method. We must handle these exceptions with try-catch.
Natomiast w moim projekcie jak mam metodę i w sygnaturze dodane throws SQLException to nigdzie w żadnym wywołaniu nie obłsuguję a mimo to aplikacja dalej działa.
Np:.
void a() throws IlegalArgumentException
{
....
}
public static void main()
{
try
{
a()
}
catch(IlegalArgumentException e)
{
...
}
}
Drugie pytanie odnośnie słówka throw za pomocą niego rzucamy wyjątki. No właśnie, ale po co rzucamy wyjątki skoro możemy go obsłużyć za pomocą try/catch, gdzie w catch dodamy informacje ze cos poszlo nie tak?