public class MyApp {
public static void main(String[] args) {
try {
// do stuff
} catch {
// handle errors
} finally {
// clean up connections etc.
}
}
}
< /code>
Гарантирует ли JVM, что блока, наконец, всегда будет запущен? Чтобы понять, откуда я привык, я привык к программам C /C ++, которые могут просто разбиться, если вы обозначите нулевой указатель, и у вас не может быть кода, который будет запускать после этого. или есть? Например, в Python я обычно делаю: < /p>
try:
# do stuff
except AnExceptionIKnewMightHappen:
# react in an appropriate way
except:
# log that weird error I had not known could happen
< /code>
И у меня никогда не было никакого приложения, не проходя через мой код. Кроме того, из PHP я знаю некомыслимые ошибки, от которых вы не можете защитить, хотя интерпретатор все еще был там после того, как это произошло (по крайней мере, это способно вывести правильное сообщение).
позвольте мне добавить, что я искал вещи внутри моего кода , что может привести к тому, что наконец-то обходится. Таким образом, указывая на System.Exit
было полезным напоминанием, хотя я не могу понять, почему я хочу сделать что -то подобное. Примечание указывает на то, что вы также должны помнить возможность выхода тем, в то время как JVM и приложение продолжают работать, была очень полезной, потому что, хотя теперь это также кажется очевидным, я не думал об этом.
Мне было интересно, если у меня есть следующий типичный код Java: < /p> [code]public class MyApp { public static void main(String[] args) { try { // do stuff } catch { // handle errors } finally { // clean up connections etc. } } } < /code> Гарантирует ли JVM, что блока, наконец, всегда будет запущен? Чтобы понять, откуда я привык, я привык к программам C /C ++, которые могут просто разбиться, если вы обозначите нулевой указатель, и у вас не может быть кода, который будет запускать после этого. или есть? Например, в Python я обычно делаю: < /p> try: # do stuff except AnExceptionIKnewMightHappen: # react in an appropriate way except: # log that weird error I had not known could happen < /code> И у меня никогда не было никакого приложения, не проходя через мой код. Кроме того, из PHP я знаю некомыслимые ошибки, от которых вы не можете защитить, хотя интерпретатор все еще был там после того, как это произошло (по крайней мере, это способно вывести правильное сообщение). позвольте мне добавить, что я искал вещи внутри моего кода , что может привести к тому, что наконец-то обходится. Таким образом, указывая на System.Exit [/code] было полезным напоминанием, хотя я не могу понять, почему я хочу сделать что -то подобное. Примечание указывает на то, что вы также должны помнить возможность выхода тем, в то время как JVM и приложение продолжают работать, была очень полезной, потому что, хотя теперь это также кажется очевидным, я не думал об этом.
Предположим, что у меня есть несинхронизированный атомный флаг is_finied . В следующем коде:
// thread A
while(!is_finished.test(memory_order_relaxed)) {
// supposing I have some observable side effects here
}
// thread B...
Предположим, что у меня есть несинхронизированный атомный флаг is_finied . В следующем коде:
// thread A
while(!is_finished.test(memory_order_relaxed)) {
// supposing I have some observable side effects here
}
// thread B...
Предположим, что у меня есть несинхронизированный атомный флаг is_finied . В следующем коде:
// thread A
while(!is_finished.test(memory_order_relaxed)) {
// supposing I have some observable side effects here
}
// thread B...
Предположим, что у меня есть несинхронизированный атомный флаг is_finied . В следующем коде:
// thread A
while(!is_finished.test(memory_order_relaxed)) {
// supposing I have some observable side effects here
}
// thread B...
Блок Finally выполняется непосредственно перед оператором return в блоке try, как показано в примере ниже — возвращает False вместо True:
>>> def bool_return():
... try:
... return True
... finally:
... return False
...
>>> bool_return()
False...