Что почитать: свежие записи из разных блогов

Категория: работа и бизнес

Эллеонор, блог «Таро и магия»

ЛГБТ-френдли.

Как-то раз мою коллегу спросили, возьмётся ли она сделать анализ на однополые отношения.

 

А я, меж тем, удивилась, что для кого-то это не только вопрос - для кого-то это запретная область, которой нельзя касаться и клиентов из которой нельзя брать. Клиент ведь задал вопрос именно потому, что где-то уже получил отказ.

Я, если честно, человек весьма широких взглядов. Обучение психологии в группе, где старостой был трансгендер, очень расширяет кругозор, знаете ли.

Мне все равно, какого пола человек (или к какому полу себя причисляет и причисляет ли вообще), мне все равно на его ориентацию, на вкусы в постели (если это не нарушает свободу других людей). Я не осуждаю любовниц или женщин, которые завели любовника. Это не мое дело, понимаете?

Моя задача - помочь человеку в той ситуации, которая с ним происходит. А любовный треугольник это, какая-то ситуация, о которой клиент сожалеет или что-то ещё - не чуть важно.

Тем, с которыми я не смогла бы работать не так уж много. Например, не стала бы узнавать, как причинить кому-то вред или как заставить другого поступить так, как тебе нужно. А в остальных мирных ситуациях, требующих анализа... Есть человек, а есть помощь, которую ему нужно оказать.

И осуждение тут совершенно не уместно.

 

Эллеонор, блог «Таро и магия»

С каким вопросом идти к тарологу?

Что можно узнать у Таро?

Спектр тем широк. Не буду разбирать их все - остановлюсь на одном примере.

Например, есть у человека желание достичь успеха в каком-то деле. Это может быть смена работы, новый проект, переезд, налаживание отношений с родителями - да что угодно.

И он хочет понять: каковы в целом шансы и как ему получить желаемое.

Что мы можем проанализировать в этом случае?

Начинаю я обычно с фигуры самого человека. В этом мне помогает карта-сигнификатор. Глядя на нее можно сразу понять: уверенно человек себя чувствует или шатко, испытывает ажиотаж или тревогу, что им движет и как в целом он себя ощущает.

Далее можно посмотреть, что ему помогает в достижении цели, а что мешает. То есть, что он УЖЕ делает, но может быть не в курсе, что какие-то из этих действий эффективны, а какие-то - только мешают. Получив эту информацию, он сможет провести работу над ошибками и увереннее двигаться к успеху.

Затем можно рассмотреть, что ему ЕЩЕ может помочь, а что - помешать. То есть какие действия лучше НАЧАТЬ выполнять, а от каких - заранее воздержаться. Так его позиция по отношению к этому делу становится еще сильнее.

Далее - примерные прогнозы развития на ближайшие 3-6 месяцев. Здесь могут вылезти возможные сложности и в целом шансы. Если прогноз скорее отрицательный - становится понятно, что нужно приложить больше усилий и где-то изменить стиль действий (карты подскажут - как). А если положительный - нужно продолжать двигаться вперед в соответствии с данным прогнозом.

Так же можно посмотреть, как окружающие относятся к затее человека, где он может найти помощь, где "подстелить соломки" и так далее.

Все это помогает найти опору, уверенность в своих действиях и составить более четкий план. Точно понимать, что тебе помогает, а что - мешает, чтобы сделать свои действия эффективнее.

И это только ма-а-аленький, крохотный кусочек того, чем может помочь расклад на Таро.

 

Эллеонор, блог «Таро и магия»

Минусы скайп-консультаций.

Почему я люблю скайп-консультации меньше, чем текстовые? Ну, кроме того, что я интроверт.

Ну, во-первых, чем славится скайп? Это внезапные "ххрр-пщщщ" во время важного разговора. Это сбои со связью, это невозможность нажать на кнопку ответа звонка (да-да, и такое бывает). И вот обсуждаешь ты с человеком его важную проблему - важную ЛИЧНУЮ проблему - а каждую минуту вам приходится прерываться и докрикиваться друг до друга. Как это называется?

Во-вторых, ты не видишь собеседника. Наличие веб-камеры может помочь, но зачастую из-за нее усиливается "ххрр-пщщщ". Поэтому информация поступает только через один канал - аудиальный, а он далеко не у всех ведущий. То есть не каждый человек хорошо усваивает и понимает информацию, которая поступает лишь через слух. Например, среди этих людей есть я.

В-третьих, сложнее подобрать время. Вы должны не только быть свободны в один и тот же момент, но и каждый должен быть максимально настроен на работу. Ты - ее выполнить, а человек - воспринять.

В-четвертых, если человек успел за твоим голосом расклад запечатать или записать - хорошо. А если не успел? А если записал, но не так? А если что-то не так понял, а ты и не в курсе, что надо было уточнить?

Отсюда следуют те плюсы текстового разбора, которые я для себя выделяю:

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

Не нужно висеть на линии и наблюдать тишину в эфире, пока таролог в процессе анализа и выкладывания карт.

Вы получаете сразу хорошо сформулированный расклад, минуя процесс анализа и разбора здесь-и-сейчас.

И в итоге: у вас есть точный и четко сформулированный расклад, который вы можете перечитать В ЛЮБОЙ МОМЕНТ. Убедиться, что вы верно все поняли, освежить знания. Не коряво или быстро написанный под диктовку, а корректный и четко оформленный.

Вот поэтому я люблю текстовые разборы.

 

А для вас какой тип консультации предпочтительнее?)

 

Эллеонор, блог «Таро и магия»

Работа с темой переездов.

Переезды! Обожаю тему переездов!

 

Обычно люди связывают с ними надежды на перемены в жизни, новые возможности, ожидания и чаяния.

И приходят ко мне, чтобы разобраться - где они верно оценили риски, а где нужно подстраховаться.

Бывает, что человек и вовсе не уверен, что хочет уехать по объективным причинам, а не пытается подсознательно сбежать от чего-то.

 

И чтобы не совершить ошибок и не тянуть с собой в новое место старые проблемы так же обращается за консультацией - чтобы быть уверенным в том, что он делает и, если нужно, отложить переезд до лучших времён, когда он будет на самом деле к нему готов. Ведь никто не хочет оказаться в новом городе без кола и двора и осознать, что жалеет о своем поступке.

Так что темы переездов очень интересные и там обычно много пищи для анализа. Все же должен быть серьёзный бэкграунд, чтобы человек решился покинуть прежнее место и отправиться куда-то ещё.

А вы переезжали когда-нибудь в новый город или страну?

 

Эллеонор, блог «Таро и магия»

"Кельтский крест".

Универсальный расклад, подходящий практически под любую ситуацию - это "Кельтский крест".

Он отвечает на такие вопросы:

1) Смысл, суть проблемы.

2) Что помогает или препятствует.

3) Бессознательные факторы, или факторы, о которых мы не знаем.

4) Сознательные факторы, что мы думаем, планы.

5) Прошлое, что привело к данной ситуации.

6) Ближайшее будущее.

7) Точка зрения спрашивающего.

8) Точка зрения других людей.

9) То, чего спрашивающий ждет или чего опасается.

10) Перспективы и результаты, вероятный итог.

На нем можно разбирать вопросы отношений, работы, финансов - любую ситуацию. Если что-то не понятно и хочется рассмотреть происходящее с разных сторон - "Кельтский крест" нам в помощь.

Если у вас, дорогие читатели, есть какие-то проблемы или вопросы, в которых вы бы хотели разобраться:

Обращайтесь ко мне за консультацией и получите разбор вашей ситуации с помощью этого расклада за 1500 рублей.

Что это значит?

Мы обсудим с вами происходящее, разберемся в том, что вас волнует и определим сроки выполнения работы.

После вы получите анализ вашей ситуации объемом от 4-5 страниц с ответом на каждый из вышеперечисленных вопросов. И вы сможете его перечитывать при необходимости.

Это поможет вам увидеть те стороны ситуации, которые вы сейчас не учитываете или не замечаете. Даст вам ясность о происходящем, и на основании этого вы сможете решить, как вам поступить или какие действия будут сейчас наиболее выгодными или эффективными.

По поводу проведения работы пишите в личные сообщения.

 

Эллеонор, блог «Таро и магия»

Представления об эзотерике.

А теперь - минутка юмора!

Чего только ни придет в голову в четыре утра. Спешу с вами поделиться.

Тема: ПРЕДСТАВЛЕНИЯ ОБ ЭЗОТЕРИКЕ.

Как люди представляют себе эзотерику:

Вот сейчас надену этот волшебный амулет - и будет у меня много денег!

Как эзотерика работает на самом деле:

Так, этот камень не подходит под эту задачу. А этот подходит под задачу, но не подходит лично мне. Так, а если я эти материалы вот так совмещу, мне энергетическую защиту сорвёт. А если этот вот так - то по шапке прилетит за такое негармоничное расходование энергии... Так, пойду-ка я лучше подработку найду.

Это и ещё многое другое в рубрике: "Все, что вам надо знать об эзотерике".

Эллеонор, блог «Таро и магия»

Почему не получается расшифровать расклад?

Если вы делаете себе расклад, а расшифровать его не получается, причиной может быть несколько вещей:

незнание трактовок;

незнание матчасти;

но, главное

нежелание узнавать ответ.

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

 

Вот мозг и уходит в нехочуху, отказываясь выдавать нам взаимосвязи карт в раскладе и что он там понял.

 

Потому что на самом деле... Всё мы уже знаем, какой там ответ. Просто психика может идти в отказ, если нам проще закрыть глаза на правду, чем принять ее и двигаться дальше.

 

А у вас как дела обстоят с раскладами для самих себя?)

 

Эллеонор, блог «Таро и магия»

Чего люди ждут от Таро и как это работает на самом деле.

Нередко обращаясь к тарологу, люди надеются получить ответ: "Вот туда не ходи, а туда - ходи". То есть четкую последовательность действий и ответ в стиле "да/нет".

 

Хотя куда чаще это выглядит как: "Если пойдешь туда - будет то-то и то-то. А если решишь пойти туда - то это и вот это".

 

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

Не спорю, бывают судьбоносные моменты, когда действительно человек выбирает между "засунуть голову в песочек и не менять свою жизнь, чувствуя фрустрацию из-за этого" и "начать делать нечто новое, хотя оно трудно, зато впоследствии обещает прогресс и успех". Такое тоже есть.

 

Но бывают и расклады вполне бытовые, когда все варианты равны или и вовсе - ни один не подходит и ответ нужно искать где-то ещё.

 

Widowmaker1984, блог «Java для собеседований»

Оглавление блога со ссылками

Часть 1. Типы данных, переменные, операторы, циклы, массивы
скрытый текстВопрос 1. Сколько ключевых слов зарезервировано языком, что это за слова, какие из них не используются?
Вопрос 2. Из каких символов может состоять имя переменной (корректный идентификатор)?
Вопрос 3. Что значит слово «инициализация»?
Вопрос 4.1. На какие основные группы можно поделить типы данных? (про примитивные типы)
Вопрос 4.2. На какие основные группы можно поделить типы данных? (про составные типы)
Вопрос 5. Какие примитивные типы вы знаете? Назовите размерность в байтах для каждого типа.
Вопрос 6. Что вы знаете о преобразовании примитивных типов данных, есть ли потеря данных, можно ли преобразовать логический тип?
Вопрос 7. Какими значениями инициализируются переменные по умолчанию?
Вопрос 8. Как передается значение переменной (по ссылке/значению)?
Вопрос 9. Что вы знаете о функции main, какие обязательные условия ее определения?
Вопрос 10. Какие логические операции и операторы вы знаете?
Вопрос 11. В чем разница краткой и полной схемы записи логических операторов?
Вопрос 12. Что такое таблица истинности?
Вопрос 13. Что такое тернарный оператор выбора?
Вопрос 14.1. Какие унарные операции вы знаете?
Вопрос 14.2. Про операторы присвоения, отношения и арифметические бинарные операции.
Вопрос 15. Какая арифметическая операция выполняется при побитовом сдвиге вправо/влево?
Вопрос 16. Какова роль и правила написания оператора выбора?
Вопрос 17. Какие циклы вы знаете, в чем их отличия?
Вопрос 18. Что такое «итерация цикла»?
Вопрос 19. Какие параметры имеет цикл for, можно ли их не задать?
Вопрос 20. Какой оператор используется для немедленной остановки цикла?
Вопрос 21. Какой оператор используется для перехода к следующей итерации цикла?
Вопрос 22. Что такое массив?
Вопрос 23. Какие виды массивов вы знаете?
Вопрос 24. Что вы знаете о классах оболочках?
Вопрос 25. Что такое автоупаковка (boxing/unboxing)?

Часть 2. Объектно-ориентированное программирование
скрытый текстВопрос 26. Назовите принципы ООП и расскажите о каждом.
Вопрос 27. Дайте определение понятию «класс»
Вопрос 28. Что такое поле/атрибут класса?
Вопрос 29. Как правильно организовать доступ к полям класса?
Вопрос 30. Дайте определение понятию «конструктор».
Вопрос 31. Чем отличаются конструкторы по-умолчанию, копирования и конструктор с параметрами?
Вопрос 32. Какие модификации уровня доступа вы знаете, расскажите про каждый из них.
Вопрос 33. Расскажите об особенностях класса с единственным закрытым (private) конструктором.
Вопрос 34. О чем говорят ключевые слова «this», «super», где и как их можно использовать?
Вопрос 35. Дайте определение понятию «метод».
Вопрос 36. Что такое сигнатура метода?
Вопрос 37. Какие методы называются перегруженными?
Вопрос 38. Могут ли нестатические методы перегрузить статические?
Вопрос 39. Расскажите о переопределение методов.
Вопрос 40. Может ли метод принимать разное количество параметров (аргументы переменной длины)?
Вопрос 41. Можно ли сузить уровень доступа/тип возвращаемого значения при переопределении метода?
Вопрос 42. Как получить доступ к переопределенным методам родительского класса?
Вопрос 43. Какие преобразования называются нисходящими и восходящими?
Вопрос 44. Чем отличается переопределение от перегрузки?
Вопрос 45. Где можно инициаилизировать статические/нестатические поля?
Вопрос 46. Зачем нужен оператор instanceof?
Вопрос 47. Зачем нужны и какие бывают блоки инициализации?
Вопрос 48. Каков порядок вызова конструкторов и блоков инициализации двух классов: потомка и его предка?
Вопрос 49. Где и для чего используется модификатор abstract?
Вопрос 50. Можно ли объявить метод абстрактным и статическим одновременно?
Вопрос 51. Что означает ключевое поле static?
Вопрос 52. К каким конструкциям Java применим модификатор static?
Вопрос 53. Что будет, если в static блоке кода возникнет исключительная ситуация?
Вопрос 54. Можно ли перегрузить static метод?
Вопрос 55. Что такое статический класс, какие особенности его использования?
Вопрос 56. Какие особенности инициализации final static переменных?
Вопрос 57. Как влияет модификатор static на класс/метод/поле?
Вопрос 58. О чем говорит ключевое слово final?
Вопрос 59. Дайте определение понятию «интерфейс».
Вопрос 60. Какие модификаторы по умолчанию имеют поля и методы интерфейсов?
Вопрос 61. Почему нельзя объявить метод интерфейса с модификатором final или static?
Вопрос 62. Какие типы классов бывают в java (вложенные… и.т.д.)
Вопрос 63. Что вы знаете о вложенных классах, зачем они используются? Классификация, варианты использования, о нарушении инкапсуляции.
Вопрос 64. Каким образом из вложенного класса получить доступ к полю внешнего класса?
Вопрос 65. Какие особенности создания вложенных классов: простых и статических.
Вопрос 66. В чем разница вложенных и внутренних классов?
Вопрос 67. Какие классы называются анонимными?
Вопрос 68. Каким образом можно обратиться к локальной переменной метода из анонимного класса, объявленного в теле этого метода? Есть ли какие-нибудь ограничения для такой переменной?
Вопрос 69. Как связан любой пользовательский класс с классом Object?
Вопрос 70. Расскажите про каждый из методов класса Object.
Вопрос 71. Что такое метод equals(). Чем он отличается от операции ==.
Вопрос 72. Если вы хотите переопределить equals(), какие условия должны удовлетворяться для переопределенного метода?
Вопрос 73. Если equals() переопределен, есть ли какие-либо другие методы, которые следует переопределить?
Вопрос 74. В чем особенность работы методов hashCode и equals? Каким образом реализованы методы hashCode и equals в классе Object? Какие правила и соглашения существуют для реализации этих методов? Когда они применяются?
Вопрос 75. Какой метод возвращает строковое представление объекта?
Вопрос 76. Что будет, если переопределить equals не переопределяя hashCode? Какие могут возникнуть проблемы?
Вопрос 77. Есть ли какие-либо рекомендации о том, какие поля следует использовать при подсчете hashCode?
Вопрос 78. Как вы думаете, будут ли какие-то проблемы, если у объекта, который используется в качестве ключа в hashMap изменится поле, которое участвует в определении hashCode?
Вопрос 79. Чем отличается абстрактный класс о интерфейса, в каких случаях что вы будете использовать?
Вопрос 80. Можно ли получить доступ к private переменным класса и если да, то каким образом?
Вопрос 81. Модификаторы. Назначение и варианты использования.
Вопрос 82. Что такое volatile и transient?
Вопрос 83. Контексты использования модификаторов (класс/поле/метод).
Вопрос 84. Какой из модификаторов более строгий: protected или package-private?
Вопрос 85. Расширение модификаторов при наследовании, переопределение и сокрытие методов. Если у класса-родителя есть метод, объявленный как private, может ли наследник расширить его видимость? А если protected? А сузить видимость?
Вопрос 86. Модификатор abstract и final для классов/методов.
Вопрос 87. Имеет ли смысл объявлять метод private final?
Вопрос 88. Какие особенности инициализации final переменных?
Вопрос 89. Что будет, если единственный конструктор класса объявлен как final?
Вопрос 91. Что такое finalize? Зачем он нужен? Что Вы можете рассказать о сборщике мусора и алгоритмах его работы.
Вопрос 92. Почему метод clone объявлен как protected? Что необходимо для реализации клонирования?

Часть 3. Исключения
скрытый текстВопрос 98. Дайте определение понятию «исключение».
Вопрос 99. Какова иерархия исключений?
Вопрос 100. Можно/нужно ли обрабатывать ошибки JVM?
Вопрос 101. Какие существуют способы обработки исключений?
Вопрос 102. О чем говорит ключевое слово throws?
Вопрос 103. В чем особенность блока finally? Всегда ли он исполняется?
Вопрос 104. Может ли не быть ни одного блока catch при отлавливании исключений?
Вопрос 105. Могли бы вы придумать ситуацию, когда блок finally не будет выполнен?
Вопрос 106. Может ли один блок catch отлавливать несколько исключений (с одной и разных веток наследований)?
Вопрос 107. Что вы знаете об обрабатываемых и не обрабатываемых (catched/uncatched) исключениях?
Вопрос 108. В чем особенность RuntimeException?
Вопрос 109. Как написать собственное («пользовательское») исключение? Какими мотивами вы будете руководствоваться при выборе типа исключения: checked/unchecked?
Вопрос 110. Какой оператор позволяет принудительно выбросить исключение?
Вопрос 111. Есть ли дополнительные условия к методу, который потенциально может выбросить исключение?
Вопрос 112. Может ли метод main выбросить исключение вовне и если да, то где будет происходить обработка данного исключения?
Вопрос 113. Если оператор return содержится и в блоке catch и в finally, какой из них «главнее»?
Вопрос 116. Что такое Error? В каком случае используется Error. Приведите пример Error’а.
Вопрос 117. Какая конструкция используется в Java для обработки исключений?
Вопрос 118. Возможно ли использование блока try-finally (без catch)?
Вопрос 119. Предположим, есть блок try-finally. В блоке try возникло исключение и выполнение переместилось в блок finally. В блоке finally тоже возникло исключение. Какое из двух исключений “выпадет” из блока try-finally? Что случится со вторым исключением?

Widowmaker1984, блог «Java для собеседований»

Вопросы 101-106, 109-113, 117-119 (обработка исключений)

"Какие существуют способы обработки исключений?"
"О чем говорит ключевое слово throws?"
"В чем особенность блока finally? Всегда ли он исполняется?"
скрытый текст"Может ли не быть ни одного блока catch при отлавливании исключений?"
"Могли бы вы придумать ситуацию, когда блок finally не будет выполнен?"
"Может ли один блок catch отлавливать несколько исключений (с одной и разных веток наследований)?"
"Как написать собственное («пользовательское») исключение? Какими мотивами вы будете руководствоваться при выборе типа исключения: checked/unchecked?"
"Какой оператор позволяет принудительно выбросить исключение?"
"Есть ли дополнительные условия к методу, который потенциально может выбросить исключение?"
"Может ли метод main выбросить исключение вовне и если да, то где будет происходить обработка данного исключения?"
"Если оператор return содержится и в блоке catch и в finally, какой из них «главнее»?"
"Какая конструкция используется в Java для обработки исключений?"
"Возможно ли использование блока try-finally (без catch)?"

"Предположим, есть блок try-finally. В блоке try возникло исключение и выполнение переместилось в блок finally. В блоке finally тоже возникло исключение. Какое из двух исключений “выпадет” из блока try-finally? Что случится со вторым исключением?"


1. В Java есть пять ключевых слов для работы с исключениями:
try - данное ключевое слово используется для отметки начала блока кода, который потенциально может привести к ошибке.
catch - ключевое слово для отметки начала блока кода, предназначенного для перехвата и обработки исключений.
finally - ключевое слово для отметки начала блока кода, которое является дополнительным. Этот блок помещается после последнего блока 'catch'. Управление обычно передаётся в блок 'finally' в любом случае.
throw - служит для генерации исключений.
throws - ключевое слово, которое прописывается в сигнатуре метода, и обозначающее что метод потенциально может выбросить исключение с указанным типом.

скрытый текст2. Когда возникает исключительное состояние, создается объект одного из подклассов Exception. По его типу становится яснее, какая именно ошибка возникла при выполнении программы. Созданный объект пересылается в метод, обрабатывающий данный тип исключительной ситуации.

2.1. Для задания блока программного кода, который требуется защитить от исключений, используется ключевое слово try. Сразу же после try-блока помещается блок catch, задающий тип исключения которое вы хотите обрабатывать. Целью большинства хорошо сконструированных catch-разделов должна быть обработка возникшей исключительной ситуации и приведение переменных программы в некоторое разумное состояние — такое, чтобы программу можно было продолжить так, будто никакой ошибки и не было.

2.1.1. Общий вид конструкции для «поимки» исключительной ситуации выглядит следующим образом:

try{
//здесь код, который потенциально может привести к ошибке
}
catch(SomeException e ){ //в скобках указывается класс конкретной ожидаемой ошибки
//здесь описываются действия, направленные на обработку исключений
}
finally{
//выполняется в любом случае ( блок finally не обязателен)
}

скрытый текст2.2. В некоторых случаях один и тот же блок программного кода может возбуждать исключения различных типов. Для того, чтобы обрабатывать подобные ситуации, Java позволяет использовать для одного try-блока любое количество catch-разделов. Наиболее специализированные классы исключений должны идти первыми, поскольку ни один подкласс не будет достигнут, если поставить его после суперкласса.

2.3. Операторы try можно вкладывать друг в друга аналогично тому, как можно создавать вложенные области видимости переменных. Если у оператора try низкого уровня нет раздела catch, соответствующего возбужденному исключению, стек будет развернут на одну ступень выше, и в поисках подходящего обработчика будут проверены разделы catch внешнего оператора try.

2.4. В Java 7 стала доступна новая конструкция, с помощью которой можно перехватывать несколько исключений одним блоком catch. Пример:

catch( IOException | SQLException ex )

2.5. Конструкция try-with-resources, также именуемая "автоматическое управление ресурсами", представляет новый механизм обработки исключений, который был представлен в Java 7 , осуществляя автоматическое закрытие всех ресурсов, используемых в рамках блока try/catch.

2.5.1. Чтобы воспользоваться данным оператором, нужно разместить заданные ресурсы в круглых скобках, после чего созданный ресурс будет автоматически закрыт по окончании блока.

2.5.2. При работе с конструкцией try-with-resources следует принимать во внимание следующие нюансы:
- С целью использования конструкции try-with-resources следует реализовать интерфейс AutoCloseable, после чего соответствующий метод close() будет вызван автоматически во время выполнения.
- В конструкции try-with-resources возможно указание одного и более классов.
- При указании нескольких классов в блоке try конструкции try-with-resources, закрытие данных классов будет производиться в обратном порядке.
- За исключением внесения ресурсов в скобки, прочие элементы аналогичны нормальному блоку try/catch в составе блока try.

3. Исключения могут возбуждаться и «вруч­ную» для того, чтобы сообщить о некоторых нештатных ситуациях.

3.1. Оператор throw используется для возбуждения исключения «вруч­ную». Для того, чтобы сделать это, нужно иметь объект подкласса клас­са Throwable, который можно либо получить как параметр оператора catch, либо создать с помощью оператора new. Ниже приведена общая форма оператора throw:

throw [ОбъектТипаThrowable];

3.1.1. При достижении этого оператора нормальное выполнение кода немедленно прекращается, так что следующий за ним оператор не выполняется. Ближайший окружающий блок try проверяется на наличие соответствующего возбужденному исключению обработчика catch. Если такой отыщется, управление передается ему. Если нет, проверяется следующий из вложенных операторов try, и так до тех пор пока либо не будет найден подходящий раздел catch, либо обработчик исключений исполняющий системы Java не остановит программу, выведя при этом состояние стека вызовов.

3.2. Только подклассы класса Throwable могут быть возбуждены или перехвачены. Простые типы (int, char и т.п.), а также классы, не являющиеся подклассами Throwable (например, String и Object) использоваться в качестве исключений не могут. Наиболее общий путь для использования исключений — создание своих собственных подклассов класса Ex­ception.

3.2.1. При создании собственных классов исключений следует принимать во внимание следующие аспекты:
- Все исключения должны быть дочерними элементами Throwable.
- Если планируете создать контролируемое исключение, следует расширить класс Exception.
- Если хотите создать исключение на этапе выполнения, следует расширить класс RuntimeException.

4. Обработка исключения может быть произведена с помощью операторов try…catch, либо "проброшена" внешней части программы. Т.е. метод может передавать возникшие в нём исключения выше по иерархии вызовов, сам его не обрабатывая. Если исключение обрабатывается в методе, оно не обязано "пробрасываться", и наоборот.

4.1. Если метод способен возбуждать исключения, которые он сам не обрабатывает, он должен объявить о таком поведении, чтобы вызывающие методы могли защитить себя от этих исключений. Для задания списка исключений, которые могут возбуждаться методом, используется ключевое слово throws. Если метод в явном виде (т.е. с помощью оператора throw) возбуждает исключение соответствующего класса, тип класса исключений должен быть указан в операторе throws в объявлении этого метода.

4.2. С учетом этого наш прежний синтаксис определения метода должен быть расширен следующим образом:
тип имя_метода(список аргументов) throws список_исключений

4.2. Метод может "пробрасывать" исключения, которые в нем реально не падают (например, на будущее) или пробрасывать исключения более "широких" классов, чем в нем возможны.

4.4. Метод public static void main( String[] args ) - обычный метод, и кроме того, что вызывается виртуальной машиной для начала выполнения программы, может быть вызван из любого другого кода. На него распространяются обычные правила указания выбрасываемых проверяемых исключений (checked exceptions) после throws.

4.4.1. Поэтому если код в main может вызвать проверяемые исключения (например, вы читаете файл с помощью Files.lines() который может бросить IOException), компилятор заставит вас либо поймать исключение в try-catch, либо указать его в throws.

4.4.1.1. Не пойманные исключения ловит экземпляр java.lang.Thread.UncaughtExceptionHandler. У каждого Thread может быть свой обработчик (задается через setUncaughtExceptionHandler; обрабатывает исключения, брошенные в этом процессе), либо можно установить обработчик по-умолчанию, через Thread.setDefaultUncaughtExceptionHandler, который и будет обрабатывать все необработанные исключения.

5. Иногда требуется гарантировать, что определенный участок кода будет выполняться независимо от того, какие исключения были возбуждены и перехвачены. Для создания такого участка кода используется ключевое слово finally. Он очень удобен для закрытия файлов и освобождения любых других ресурсов, захваченных для временного использования в начале выполнения метода.

5.1. Даже в случаях, когда в методе нет соответствующего возбужденному исключению раздела catch, блок finally будет выполнен до того, как управление перейдет к операторам, следующим за разделом try.

5.2. Следует помнить, что:
- Выражение catch не может существовать без оператора try.
- При наличии блока try/catch, выражение finally не является обязательным.
- Блок try не может существовать при отсутствии выражения catch либо выражения finally.
- Существование какого-либо кода в промежутке между блоками try, catch, finally является невозможным.

5.2.1. Запись без catch допустима, если имеется связка try... finally . Но смысла в подобной записи немного.

5.3. Блок finally выполняется не всегда, например если в блоке try вызывать System.exit(0), то finally недостижим, так как происходит системный выход из программы. Общими словами: когда JVM умирает, ей уже не до finally.

5.4. Если в блоке try есть return, блок finally все равно будет вызван. А если данный блок содержит уже свой return, то именно он в итоге и будет задавать возвращаемое значение. В этом смысле данный return "главнее".

5.5. Аналогично, если в обоих блоках упадут исключения, то исключение в finally «проглотит» исключение в try. Чтобы не "потерять" исключение, его можно обработать в блоке try.

Лучшее   Правила сайта   Вход   Регистрация   Восстановление пароля

Материалы сайта предназначены для лиц старше 16 лет (16+)