Java & Exceptions
6 отговора
342 прегледа
Java & Exceptions
Едно бързо питане
.
В Java, проверката дали една функция хвърля повече exceptions отколкото са декларирани в throw(...) клаузата compile-time ли се прави само, или и run-time.
Демек ако подменя една библиотека с нова, която хвърля няколко нови типа exceptions, това ше счупи ли съществувашия код, който я ползва?
Сигнатура!
В Java, проверката дали една функция хвърля повече exceptions отколкото са декларирани в throw(...) клаузата compile-time ли се прави само, или и run-time.
Демек ако подменя една библиотека с нова, която хвърля няколко нови типа exceptions, това ше счупи ли съществувашия код, който я ползва?
Сигнатура!
Re: Java & Exceptions
Programmer's rule number 9:
If you are not sure how something works, test it.
По въпроса, мисля че е само при компилиране.
Мечтата е мисъл, мисълта е идея, всяка идея се реализира. Аз не мечтая, а реализирам идеите си.
If you are not sure how something works, test it.
По въпроса, мисля че е само при компилиране.
Мечтата е мисъл, мисълта е идея, всяка идея се реализира. Аз не мечтая, а реализирам идеите си.
Re: Java & Exceptions
A - заеби ти тестване - мен ме интересува по принцип, не дали е по един начин в J 1.x.y и по друг в J.p.q
То по тая логика стандартите и различните компилатори да го духат.
То по тая логика стандартите и различните компилатори да го духат.
Редактирано от Questor на
Re: Java & Exceptions
Според спецификацията (частта Binary Compatibilty):
13.4.19 Method and Constructor Throws
Changes to the throws clause of methods or constructors do not break compatibility
with existing binaries; these clauses are checked only at compile time.
Предполагам, че подмененият клас се зарежда без проблеми. Вероятно, ако съотв. метод хвърли неочакван checked exception, това ще доведе до някакъв вид Error (от типа на наследниците на java.lang.IncompatibleClassChangeError).
Като имам време, ще експериментирам...
13.4.19 Method and Constructor Throws
Changes to the throws clause of methods or constructors do not break compatibility
with existing binaries; these clauses are checked only at compile time.
Предполагам, че подмененият клас се зарежда без проблеми. Вероятно, ако съотв. метод хвърли неочакван checked exception, това ще доведе до някакъв вид Error (от типа на наследниците на java.lang.IncompatibleClassChangeError).
Като имам време, ще експериментирам...