
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.21] |
![]() |
|
Страницы: (17) « Первая ... 6 7 [8] 9 10 ... 16 17 все ( Перейти к последнему сообщению ) |
Сообщ.
#106
,
|
|
|
Хехе. Говнокодный компилятор D (очень маргинальный язык
![]() ![]() |
Сообщ.
#107
,
|
|
|
Зачем все подряд? Только то, что владеет ресурсом. |
Сообщ.
#109
,
|
|
|
Цитата MyNameIsIgor @ Я имел в виду EMC в Питере. Ты там работаешь? |
Сообщ.
#110
,
|
|
|
Цитата zveroboy @ Цитата MyNameIsIgor @ Я имел в виду EMC в Питере. Ты там работаешь? Нет |
Сообщ.
#111
,
|
|
|
Цитата D_KEY @ Зачем все подряд? Только то, что владеет ресурсом. вот пример , как его перестроишь на try-with resources ? ![]() ![]() OutputStreamWriter wr = null; BufferedReader rd = null; try { // Send data URL url = new URL(urlAdress); URLConnection conn = url.openConnection(); conn.setDoOutput(true); OutputStream outputStream = conn.getOutputStream(); wr = new OutputStreamWriter(outputStream); wr.write(data); wr.flush(); // get response in order to complete sending the request rd = new BufferedReader(new InputStreamReader(conn.getInputStream())); } catch (ConnectException e) { LogUtil.logMessage("sendNotificationRequest", "UI is down - notification wasn't sent", logger, LogUtil.INFO); } catch (Exception e) { LogUtil.logError("sendNotificationRequest", e, logger); } finally { try { if (wr != null) { wr.close(); } if (rd != null) { rd.close(); } } catch (IOException e) { LogUtil.logError("sendNotificationRequest", e, logger); } } |
Сообщ.
#112
,
|
|
|
Цитата sergioK @ вот пример Лапша то какая ![]() Цитата sergioK @ как его перестроишь на try-with resources ? ![]() ![]() try { // Send data URL url = new URL(urlAdress); URLConnection conn = url.openConnection(); conn.setDoOutput(true); OutputStream outputStream = conn.getOutputStream(); try(OutputStreamWriter wr = new OutputStreamWriter(outputStream)) { wr.write(data); wr.flush(); } // get response in order to complete sending the request try(BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()))) {} } catch (ConnectException e) { LogUtil.logMessage("sendNotificationRequest", "UI is down - notification wasn't sent", logger, LogUtil.INFO); } catch (IOException e) { LogUtil.logError("sendNotificationRequest", e, logger); } catch (Exception e) { LogUtil.logError("sendNotificationRequest", e, logger); } |
![]() |
Сообщ.
#113
,
|
|
Цитата MyNameIsIgor @ Лапша то какая Китайская, похоже. |
![]() |
Сообщ.
#114
,
|
|
Цитата applegame @ Говнокодный компилятор D (очень маргинальный язык ) вообще не освобождает память. Интересный подход ![]() |
Сообщ.
#115
,
|
|
|
Не очень знаю особенности Java, но в примере, приведённом выше, бросилось в глаза, почему конструкторы внутри try. Про C# могу сказать, что инициализатор оператора using выполняется перед блоком try. В версиях .Net до 4.5 была даже опасная ошибка с перемещением операторов в try:
![]() ![]() try { _readerWriterLock.AcquireWriteLock(); //...do stuff } finally { _readerWriterLock.ReleaseWriteLock(); } А при обработке подобных ресурсов (как в примере выше) я обычно просто использую вложенные операторы using. |
Сообщ.
#116
,
|
|
|
Цитата Ilya81 @ Не очень знаю особенности Java, но в примере, приведённом выше, бросилось в глаза, почему конструкторы внутри try. потому что иначе не скомпилируеться ,в С# нет throws, который обязывает сделать try catch . И там и там косяк(try понимает только те кто implement disposable ) а точнее попытка компенсироваить отсутсвие деструктора , Да если обьек member класса , то try не поможет |
Сообщ.
#117
,
|
|
|
Цитата Ilya81 @ но в примере, приведённом выше, бросилось в глаза, почему конструкторы внутри try. Это как раз вместо using в C#. try with resources |
![]() |
Сообщ.
#118
,
|
|
Цитата D_KEY @ Это как раз вместо using в C# Он про ![]() ![]() try { File f = new File("..."); // do something with f } finally { f.close(); } вместо ![]() ![]() File f = new File("..."); try { // do something with f } finally { f.close(); } как я понял из его примера. Суть в том, что, если в конструкторе внутри try возникнет исключение например и ресурс не будет захвачен, то finally все равно выполнит код по освобождению ресурса. Поэтому у сержио проверка на null внутри finally. Кстати, ни в примере сержио, ни в примере Игоря нет вызова conn.disconnect(). Я конечно хз насколько он необходим, но когда сам искал пример работы с http, нашел пример, в котором этот самый conn.disconnect() есть. |
Сообщ.
#119
,
|
|
|
Цитата korvin @ Я конечно хз насколько он необходим, но когда сам искал пример работы с http, нашел пример, в котором этот самый conn.disconnect() есть. А я сам хз, я просто код исправлял без потери семантики ![]() |
![]() |
Сообщ.
#120
,
|
|
Цитата MyNameIsIgor @ А я сам хз, я просто код исправлял без потери семантики А, ну да, не подумал. =) |