1.1 Wewnętrzna klasa abstrakcyjna może mieć każdy modyfikator, kolejność abstract private/private abstract i inne jest dowolna.
Podobnie dla interfejsów i klas.
Klasa metody też może być abstrakcyjna ale modyfikator dostępu default jest jedynym dozwolonym
2.6 ArrayIndexOutOfBoundException – iterujemy poza najwyższy index, powinnismy do tablica.length (pole, nie metoda)
ClassCastException -
IllegalArgumentException – throw new IllegalArgumentException() ;rzucamy go sami jesli jakis warunek nie jest spełniony, sprawdzanie argumentow publicznbych metod
IllegalStateException – Signals that a method has been invoked at an illegal or inappropriate time. In other words,
the Java environment or Java application is not in an appropriate state for the requested operation.
NullPointerException
NumberFormatException – dziedziczy po IllegalArgumentException konwersja stringa na typ numeryczny ale string miał nieprawdłowy format
Integer.parseInt(“kasjd”); zwraca int Double.parseDouble(“shdk”) zwraca double
ERRORY:
AssertionError – -ea, wyłącza aplikacje
ExceptionInInitializerError – error w statycznym inicjalizatorze albo inicjalizatorze statycznej zmiennej
jest to wraper na Runtimeexceptions które moga pojawic sie w czasie inicjalizacji
Oryginalny wyjatek pojawi sie w Throwable.getCause()
error pojawi sie tylko w czasie refleksji
StackOverflowError – rozszerza VirtualMachineError, instnieje od 1.0
“Thrown when a stack overflow occurs because an application recurses too deeply”
rekurencyjne wywołanie metoda woła sama siebie
NoClassDefFoundError – rzucany przez jvm albo ClassLoader kiedy prbuje zaadowac
definicje klasy(przez new) i nie moze takiej definicji znalezc (istniaa w czasie kompilacji ale w runtime jej nie ma)
build time and runtime classpaths