try-finally

Что произойдет, если обоих блоках catch и finally бросить исключение?...

Когда я пишу свой собственный компилятор для Java-подобного языка, у меня возникают проблемы с компиляцией synchronized blocks. Я пришел к следующей идее, чтобы упростить их до блоков try-finally: synchonized (obj) { statements... } Можно заменить на Object _lock = obj _monitorEnter(lock) try { ...

взгляните на следующие два метода: public static void foo() { try { foo(); } finally { foo(); } } public static void bar() { bar(); } под управлением bar() однозначно приводит к StackOverflowError, но foo() нет (программа просто, кажется, идут бесконечно). почему это?...

Я не уверен, зачем нужны finally на try...except...finally заявления. На мой взгляд, этот блок кода try: run_code1() except TypeError: run_code2() other_code() то же самое с этим с помощью finally: try: run_code1() except TypeError: run_code2() finally: other_code() Я что-то пропусти...

Я просматриваю какой-то новый код. Программа имеет только попытку и блок finally. Поскольку блок catch исключен, как работает блок try, если он встречает исключение или что-то бросаемое? Он просто идет прямо к последнему блоку?...

как работает оператор return внутри блока try/catch? function example() { try { return true; } finally { return false; } } Я ожидаю, что выход этой функции будет true, а false!...