Hej.
Czemu i z czego wynika różnica między obsługą wyjątków kiedy deklarujemy:
- że dana metoda rzuca wyjątek (throws) i pod jakimś warunkiem rzucamy nowy (throw new ... ), i wtedy musimy albo obsłużyć blokiem try/catch albo przekazać dalej i zadeklarować rzucenie wyjątku w metodzie wywołującej.
np.
public Range(long lowerBound, long upperBound) throws Exception {
if (upperBound <= lowerBound) {
throw new IllegalArgumentException("lowerbound is bigger than upperbound");
}
this.lowerBound = lowerBound;
this.upperBound = upperBound;
}
tutaj przy teście trzeba przynajmniej zadeklarować throws:
public void shouldSayThat15IsInRange() throws Exception {//....}
2)a przypadkiem, że metoda rzuca w ciele wyjątek (throw new.... ) bez deklaracji (throws) i wtedy nie musimy robić nic...
public Range(long lowerBound, long upperBound) {
if (upperBound <= lowerBound) {
throw new IllegalArgumentException("lowerbound is bigger than upperbound");
}
this.lowerBound = lowerBound;
this.upperBound = upperBound;
}
Tu przy np. Teście nie trzeba nic deklarować.
public void shouldSayThat15IsInRange() {//....}