Описание тега try-finally

NoneTry-finally - это предложение, используемое для определения блока кода, который может генерировать исключение вместе с инструкциями для выполнения независимо от того, возникло ли исключение или нет.
1 ответ

Как обрабатывать исключения броска внутри блока finally в Java

В Java, не рекомендуется бросать исключения внутри finally раздел в try-chatch блокировать из-за скрытия распространения любого необработанного throwable который был брошен в try или же catch блок. Эта практика blocker нарушение уровня в соответстви…
0 ответов

Я знаю, наконец, что исключение выдается без какой-либо переменной

Есть ли способ узнать в finally это исключение выдается без использования какой-либо дополнительной переменной, как показано ниже: boolean hasFailed = true; try { // code //... hasFailed = false; } finally { if (hasFailed) { // handle failure } } Ан…
8 ответов

Должен ли я поставить блок try-finally после каждого Object.Create?

У меня есть общий вопрос о наилучшей практике в OO Delphi. В настоящее время я помещаю блоки try-finally в любое место, где я создаю объект, чтобы освободить этот объект после использования (чтобы избежать утечек памяти). Например: aObject := TObjec…
27 май '10 в 16:35
3 ответа

Может ли наконец блокировать узнать, было ли исключение

В программе Python у меня есть код со следующей структурой: try: value = my_function(*args) finally: with some_context_manager: do_something() if 'value' in locals(): do_something_else(value) Но 'value' in locals() конструкция кажется немного хрупко…
09 апр '17 в 15:44
6 ответов

Блок Try-finally предотвращает StackruError

Взгляните на следующие два метода: public static void foo() { try { foo(); } finally { foo(); } } public static void bar() { bar(); } Бег bar() явно приводит к StackruError, но работает foo() нет (программа, кажется, работает бесконечно). Это почему…
15 сен '12 в 15:49
2 ответа

Почему компилятор Java наконец-то копирует блоки?

При компиляции следующего кода с простым try/finally Блок, компилятор Java производит выходные данные ниже (просмотр в ASM Bytecode Viewer): Код: try { System.out.println("Attempting to divide by zero..."); System.out.println(1 / 0); } finally { Sys…
15 мар '15 в 14:16
6 ответов

Использование наконец вместо улова

Я видел этот шаблон несколько раз сейчас: bool success = false; try { DoSomething(); success = true; } finally { if (!success) Rollback(); } И мне было интересно: почему это лучше, чем использовать catch для отката? try { DoSomething(); } catch { Ro…
23 май '12 в 14:15
3 ответа

ДОПОЛНИТЕЛЬНАЯ РАЗЪЯСНЕНИЕ: Как правильно написать операторы Try..Finally..Except?

RE: Как правильно написать Try..Finally..Except операторов? Я все еще смущен оригинальным вопросом ОП. В частности, последняя строка процедуры (за пределами try..finally..end), которая гласит "Screen.Cursor:=crDefault". Насколько я понимаю, любые ис…
21 ноя '13 в 19:55
6 ответов

Лучшая практика для выполнения вложенного оператора TRY / FINALLY

Привет. Каков наилучший способ делать вложенные операторы try & finally в delphi? var cds1 : TClientDataSet; cds2 : TClientDataSet; cds3 : TClientDataSet; cds4 : TClientDataSet; begin cds1 := TClientDataSet.Create(application ); try cds2 := TClientD…
5 ответов

О ваще

Я знаю finallyЦель состоит в том, чтобы гарантировать выполнение некоторых инструкций или кода очистки. Но какова разница в использовании finally или поставить код после блока catch.Я имею в виду, приведите пример случая, когда вам нужно использоват…
22 май '14 в 20:39
4 ответа

Как смоделировать "попробуй наконец" или "попробуй", кроме языков, в которых их нет

Есть ли способ симулировать try-finally или же try-except на языке, который не имеет их? Если есть какое-то случайное, непредсказуемое, исключение, я должен быть уверен, что какая-то очистка выполняется. я мог бы попытаться быть уверенным в том, что…
02 янв '12 в 02:23
2 ответа

Python: использование continue в инструкции try-finally в цикле

Будет ли следующий код: while True: try: print("waiting for 10 seconds...") continue print("never show this") finally: time.sleep(10) Всегда печатайте сообщение "жду 10 секунд...", спите в течение 10 секунд и делаете это снова? Другими словами, дела…
11 май '12 в 03:11
1 ответ

Поддержание потока кода с возможностью отката в Python без экстремальной идентификации

Я столкнулся с ситуацией, когда я работаю над фрагментом кода, где я изменяю команду на удаленном объекте (то, что я не могу дублировать для работы с клоном), а затем запрашиваю удаленный объект для какой-либо операции в новое состояние и отменить в…
19 авг '11 в 09:18
2 ответа

Использование try-finally для выполнения операторов после возврата

Рассмотрим следующий код: Foo result = array[index]; index = (index + 1) % array.length; return result; Для выполнения некоторых заключительных действий требуется дополнительная переменная. Имеет ли смысл написать это как: try { return array[index];…
02 июл '18 в 15:31
2 ответа

Delphi Thread Timeout дает утечки каждый раз

Итак, я реализовал многопоточность с помощью THandle, вот так: procedure Calc_Prin; type TTeste = record ptrClass: TSpAu; ptrTEMPO: ^integer; end; var TEMPO: integer; RESULTADO: THandle; thrID: DWord; teste: TTeste; function THREAD_C(PTR: pointer): …
3 ответа

Порядок выполнения try, catch и finally блокирует

Предположим, у меня есть код C#, подобный этому: try { Method1(); } catch(...) { Method2(); } finally { Method3(); } Method4(); return; Мой вопрос заключается в том, что при условии, что исключение не выдается, будет ли Method3() выполняться перед M…
5 ответов

Как определить, возникло ли исключение, когда вы находитесь в блоке finally?

Можно ли сказать, было ли исключение, когда вы находитесь в finally статья? Что-то вроде: try: funky code finally: if ???: print('the funky code raised') Я хочу сделать что-то вроде этого более сухим: try: funky code except HandleThis: # handle it r…
1 ответ

Java вернуть ссылку или объект? Вернуться, прежде чем, наконец?

Давайте рассмотрим тестовый класс import java.util.Date; public class TestClass { public String finallyHappensBeforeReturn(){ try{ return "Important Message"; }finally{ finallyHappensBeforeReturn(); } } public String unaffectedReference(){ String me…
05 авг '15 в 04:19
1 ответ

Delphi - Какой "правильный" порядок для блоков исключений и окончательно?

Предположим, у меня есть следующая процедура: function ReadFile(f : TFilename) : Boolean; var fs : TFileStream; begin Result := False; try fs := TFileStream.Create(f, ...); try // read file ... Result := True; finally FreeAndNil(fs); end; except // …
1 ответ

Исключение Python в предложении finally использует предыдущие исключения

В моем реальном случае Segmentation fault возникает в finally пункт, с которым я ничего не могу поделать, потому что он происходит от внешней библиотеки, используемой через ctypes. На самом деле, я не беспокоюсь об этом segfault, потому что сценарий…
27 фев '13 в 00:41