|
|
|
подскажите что почитать про исключения
|
|||
|---|---|---|---|
|
#18+
подскажите что почитать про исключения, обработку и прочее. интересует серьезный фундаментальный материал да, в каждой типичной книжке по Java есть глава про исключения но меня интересуют действительно знания продвинутого уровня разбор best practices, тонких моментов, и как оно работает внутри можно, конечно, самому как-то копать, но уж больно немало времени это займет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2016, 13:34 |
|
||
|
подскажите что почитать про исключения
|
|||
|---|---|---|---|
|
#18+
В части философии механизмов исключений есть некоторое "рыскание". Идёт процесс пересмотра их необходимости. Я не имею в виду Java language. Здесь скорее всего они остаются в деле и надолго. Но сознательно хотел-бы дистанциироваться от Java language и обсудить этот механизм вообще. Несколько отстранённых наблюдений (или фактов): Наблюдение №1. Google Lang (GoLang) сознательно отказались от этого механизма. Заменив его возвратом кода ошибки. http://blog.golang.org/error-handling-and-go Наблюдение №2. Хорстман пишет о Scala language: В Java контролируемые исключения (checked) контролируются на этапе компилляции. Если метод может вызывать исключение IOException, необходимо явно объявить это. Такой подход вынуждает программиста думать, где предусмотреть обработку этого исключения что само по себе является достойным похвалы. К сожалению это может приводить к созданию монструозных сигнатур методов таких как Код: java 1. Многие программисты на Java терпеть не могут эту особенность и в результате либо перехватывают исключение слишком рано, либо используют слишком обобщённые классы исключений. Создатели Scala решили отказаться от контролируемых исключений, признавая что полные проверка на этапе компилляции не всегда оправдана. Наблюдение №3. Брюс Эккель пишет о механизме Exceptions в Python. авторIn Python, exceptions are unchecked, and you can catch them and do something if you want, but you aren't forced. And it seems to work just fine. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2016, 17:00 |
|
||
|
подскажите что почитать про исключения
|
|||
|---|---|---|---|
|
#18+
mayton, Ну, в Ada и pl/sql тоже нет следов "checked exceptions" и воркинк джаст файн - никто не жалуется. У Эккеля в этом абзаце существенно важнее предложения этот абзац начинающие, а не заканчивающие. http://www.mindview.net/Etc/Discussions/CheckedExceptions [/]Нужны ли Яве контролируемые исключения Нужны ли Яве контролируемые исключенияChecked exceptions seem like a really good idea at first. But it's all based on our unchallenged assumption that static type checking detects your problems and is always best. Java is the first language (that I know of) that uses checked exceptions and is thus the first experiment. However, the kind of code you must write around these things and the common phenomenon of "swallowed" exceptions begins to suggest there's a problem. Это не просто "первый эксперимент", а такой "первый эксперимент", который больше никем не был повторен. То есть ошибка (одна из) проектировщиков языка. Касательно Go - существо дела здесь видится не в том, что GO хочет вернуть программиста во времена возврата кодов ошибок в C, с немедленными проверками результата по вызову функции, а в том, что предоставляет программисту первоклассный тип, определенный в базовом синтаксисе языка ( т.е. - часть внутренней общеязыковой библиотеки), позволяющий протягивать иформацию об ошибке сквозь набор вложенных функциональных вызовов. Т.е. - шаблон проектирования а-ля "старый добрый С" может быть реализован с разбегу. Но проектировщики GO закладываются и пропагандируют "функциональный" подход к проектированию программ и обработке ошибок в них: они мягко предлагают разработчику код, внутри которого может происходить ошибка, формулировать в виде самостоятельной лямбды, возвращая информацию о ней в виде известного компилятору навсегда единого типа данных. И обрабатывать эту информацию в отдельном блоке кода по завершению вызова той лямбды. Это 100% тот самый подход, который сейчас проникает в Java через форточку, открытую в 8-ке путем вживления а-ля лябд (синтаксически - так именно лямбд). Только в Java всю эту механику (пока?) нужно реализовать своими ручками, объявив подходящие клиентские классы для проброса информации об ошибке из лямбды в вызывающий код. PS про checked exceptions в Java - с одной стороны, мне еще продолжает казаться что они из Java будут выведены только вместе с выносом самой Java из массовой практики кодирования. С другой стороны, глядя на то, какой кинжал сейчас всобачивается в сердце унаследованного Java-кода путем заявления к выходу "модульной" Java-9, я уже готов поверить, что к выходу какой-нибудь Java-13 будет сказано - забудьте про checked exceptions - больше этот синтаксис мы не поддерживаем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2016, 20:25 |
|
||
|
подскажите что почитать про исключения
|
|||
|---|---|---|---|
|
#18+
Если принуждение разработчика к соблюдению протокола декларации - это только опция компиллятора - то ее можно легко выпилить просто смягчив проверки фазы компилляции. Для меня к примеру совершенно неочевиден МЕТОД которым я должен отработать InterruptException. Я по сути не знаю как его отработать. Только Хорстман помнится писал о том что нужно вызвать потоковый interrupt() внутри. Хотя многие этого не соблюдают. Или же выпиливаение можно оформить как Warning фазы компилляции. Но при этом компиллятор всё-таки выдаёт нам результат (компилирует успешно) хотя и предупреждает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2016, 21:30 |
|
||
|
подскажите что почитать про исключения
|
|||
|---|---|---|---|
|
#18+
mayton, тебе будет интересно: вот интервью 2003 года, http://www.artima.com/intv/handcuffs.html при несколько вольном пересказе получится так: Брюс Эккель спрашивает а Андерса Хейлсберга - как же это вам удалось не вляпаться в checked exception при проектировании С#? - ведь "зашибись-идея" - тогда так все думали. - Ну, правда - мы искренне считали это "зашибись-идеей". Тогда что-то удержало, а теперь я всем рассказываю, что не верю в масштабируемость кода, построенного на таком синтаксисе. Эккель не просто троллит Хейлсберга, а троллит, обладая точным знанием, что до создания C# Хейлсберг занимался в Microsoft реализацией J++. Т.е. в смысле бытовой психологии у него практически не было шансов не перетащить "клевую фишку" в новый язык. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2016, 21:41 |
|
||
|
подскажите что почитать про исключения
|
|||
|---|---|---|---|
|
#18+
boobymayton, тебе будет интересно: вот интервью 2003 года, http://www.artima.com/intv/handcuffs.html Спасибо. Я читану чуть позже. Надеюсь что это не будет представлять археологический интерес. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2016, 23:06 |
|
||
|
подскажите что почитать про исключения
|
|||
|---|---|---|---|
|
#18+
grokда, в каждой типичной книжке по Java есть глава про исключения но меня интересуют действительно знания продвинутого уровня разбор best practices, тонких моментов, и как оно работает внутри Дабы не было много оффтопа я всё-таки попробую немного ответить на главный вопрос который спросил автор. Я честно не знаю таких книг где-бы описывались знания "продвинутого уровня". Скорее всего тема исключений в вакууме вообще не существует как объект для монографий. Слишком много чести - растекаться мыслями по бревну ради этой опции. Но мне лет 10 назад дали ценный совет по отработке исключений. Вобщем если рассматривать ПО как стек уровней то ты должен обрабатывать исключение только на том уровне на котором ты в состоянии "принять решение". Например CSV-парсер при получении ошибки I/O ничего не может сделать. Он может просто экскалировать эту ошибку наверх. На тот уровень который управляет вызовом CSV-парсера и соотв. может решать что делать дальше. Повторить загрузку CSV-файла. Или отложить. Или тот-же CSV-парсер при отработке преобразования String=>Int (NumberFormatException) вполне себе может принимать решения. Например игнорировать "битые" числа (вести учёт ошибок или складывать в Logger битые строки). В последнем кейсе CSV парсер не сигналит от этом через throw. Что еще добавить здесь? Не знаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2016, 23:16 |
|
||
|
подскажите что почитать про исключения
|
|||
|---|---|---|---|
|
#18+
mayton...Надеюсь что это не будет представлять археологический интерес. Это тебе решать... хочу вот на что предложить обратить внимание - работа взаимодействующих компонентов, в общем случае - в разных процессах (явно упоминается в интервью). - работа "твоего" кода из-под неуправляемого тобой хост-приложения, когда необработанная ошибка в твоем коде может приводить к аборту всего хоста. В обоих случаях не типизированный до checked (уровня compile-time) try-catch - это доктор, который в одном catch спрашивает у полученного объекта ошибки (runtime) - родной, так что же в том вызове не так приключилось? Т.е., с точки зрения вызывающего ошибка, - это возможная, ожидаемая часть данных , приезжающая из вызова. "Красота" compile-time checked захода, явленная в виде ветвистого наследования типов ожидаемых ошибок не только обязывает вызывающего знать их все наперечет (только для того, чтобы скопипасть нужное количество раз вывод текста сорта "оно там не смогло сработать, и я об этом знаю в своей собственной, отдельной для этой конкретной разновидности не срабатывания ветке кода "), но и обязывает передавать такого рода знание дальше по стеку вызова, если внутри текущего блока не находится разумного способа обойтись с обнаруженной проблемой, навязывая вышележащим слоям из ниоткуда появившуюся необходимостью иметь информацию времени компиляции об устройстве нижележащих слоев. Это особенно радует с учетом того обстоятельства, что compile-time информация о вызываемом может быть подставой чистой воды. Что за радость получить скомпилированный код и крашнутое приложение, вместо возможности обработать runtime-error без краха вызывающего? Разработчики Go/Golang всего лишь сказали следующее: ну и нафига нам вообще вся эта лабуда, включая unchecked, в конце концов. Если информация об ошибке - часть данных , приезжающая из вызова, не проще ли информацию об ошибке явно инкорпорировать в состав возврата, получаемого из вызываемого кода. Выбросим-ка мы все это добро разом, вместе с обсуждением о "состоянии" системы в момент вхождения в блок catch, напоминаниями разработчику о том, что не есть хорошая идея использовать try-catch для управления бизнес-кодом (а нескромный вопрос - зачем тогда вообще придумывать управляющие конструкции - неужели только для того, чтобы писателю книжек всегда было обеспечено несколько страниц, на которых он тщательно объяснит, почему ими не надо пользоваться?). Для управления кодом есть ясный и понятный if. А вот в куда этот if должен двигаться - имеет право определяться приехавшими из вызова данными. Что тут скажешь - с одной стороны - всего 60 примерно лет потребовалось, чтобы претворить это в синтаксис, с другой стороны си-писатели имеют право хмыкать - мы с самого начала так и работали, да еще и совсем без перегрузки нашего рантайма подсистемами пропагации ошибок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2016, 00:29 |
|
||
|
подскажите что почитать про исключения
|
|||
|---|---|---|---|
|
#18+
maytonто ты должен обрабатывать исключение только на том уровне на котором ты в состоянии "принять решение". +1 поэтому, всё с исключениями обстоит нормально. А теория очень сильно зависит от конкретики. Увы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2016, 11:34 |
|
||
|
подскажите что почитать про исключения
|
|||
|---|---|---|---|
|
#18+
Исключения - часть семантики. По-этому checked exceptions и были придуманы. Что касается InterruptedException - https://www.ibm.com/developerworks/ru/library/j-jtp05236/ boobyДля управления кодом есть ясный и понятный if. А вот в куда этот if должен двигаться - имеет право определяться приехавшими из вызова данными. Вот уж достижение - на каждый вызов по if. Код мгновенно становится ясным и понятным, легко сопровождаемым. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2016, 12:29 |
|
||
|
подскажите что почитать про исключения
|
|||
|---|---|---|---|
|
#18+
booby Эккель не просто троллит Хейлсберга, а троллит, обладая точным знанием, что до создания C# Хейлсберг занимался в Microsoft реализацией J++. Т.е. в смысле бытовой психологии у него практически не было шансов не перетащить "клевую фишку" в новый язык. Хейлсберг не ребёнок- развитие pascal в borland было очень разумным. Он, хотя бы, изучил вопрос, а не стал тупо копировать ущербный С++, как Гослинг (один Result и именованные конструкторы чего стоят- хотя контракты они так и не сделали). Но тут я не согласен- checked exception это хорошая абстракция, годная. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2016, 17:02 |
|
||
|
подскажите что почитать про исключения
|
|||
|---|---|---|---|
|
#18+
booby Разработчики Go/Golang всего лишь сказали следующее: ну и нафига нам вообще вся эта лабуда, включая unchecked, в конце концов. Если информация об ошибке - часть данных , приезжающая из вызова, не проще ли информацию об ошибке явно инкорпорировать в состав возврата, получаемого из вызываемого кода. И как это работает в случае деления на ноль? А ошибка чётности памяти? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2016, 17:04 |
|
||
|
подскажите что почитать про исключения
|
|||
|---|---|---|---|
|
#18+
Alexey TominА ошибка чётности памяти? А как современный разработчик должен реагировать на ошибку чётности памяти? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2016, 18:20 |
|
||
|
подскажите что почитать про исключения
|
|||
|---|---|---|---|
|
#18+
maytonДля меня к примеру совершенно неочевиден МЕТОД которым я должен отработать InterruptException. Я по сути не знаю как его отработать. А зачем его обрабатывать? Общий принцип простой: если не знаешь - надо выпускать наверх, наверху знают. Если наверх выпускать нельзя (например мы в runnable) - то все. Можешь никак не обрабатывать, можешь в лог ругнуться. В чем вообще проблема? maytonА как современный разработчик должен реагировать на ошибку чётности памяти? На такое среагировать должна операционка. Но предположить, что такое могло быть в коде - значит надо просто вываливаться наверх, согласно тому же принципу. Непонятно, почему oracle до сих пор не отказался от checked-экзепшенов. Обратную совместимость это не нарушило бы, а жизнь упростило бы сильно. В части философии механизмов - да, неудобно. Недостает инструмента "перезапуска с (почти)того же места". Фактически, точка, в которой исключение ловится и точка перезапуска - это одна точка, а если б можно было эти два понятия как-то разделить, то было бы гораздо удобней. Например, там, где возникло FileNotFoundException - обработчик мог бы подставить следущий из списка каталог и возобновить. Или в примере с СSV-файлом. Допустим, 100гб пропарсено из потока - и возникает IOException. Жалко проделанной работы. Вот если б экзепшен вывалился со списком ExecutionPoint-ов и можно было бы что-то подкрутить (включая локальные переменные потока с экзепшеном) и сказать "а теперь продолжай с вот этого ExecutionPoint" - это было б удобно. Просто, реализация такого механизма сильно подпортит перфоманс, поэтому его не делают. Если такое поведение нужно - то проще заложить его в алгоритм парсинга. Поэтому тот механизм обработки, что есть - это своего рода компромисс, обеспечивающий приемлемое удобство без провалов в производительности. p.s. В Idea в режиме дебага есть кнопочка drop frame, она делает частично это. Можно с какого-то места повторить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2016, 19:45 |
|
||
|
подскажите что почитать про исключения
|
|||
|---|---|---|---|
|
#18+
[quot Alexey Tomin]booby ... Но тут я не согласен- checked exception это хорошая абстракция, годная. Об этом лучше не мне рассказывать ( я на java не программирую), а сразу (на выбор) Блоху, Эккелю или Гетсу. Тем более, что каждый из них обладает ясным представлением мотивации, приведшей к стандартизации этой штуки в синтаксисе языка. Мое же имхо, состоит в том, что в системах программирования с использованием подсистем управления исключениями с 1980 года ничего не произошло в том смысле, в каком тогда Хоар хотел их "почистить". Тогда - применительно к Ada как кандидату на безопасный язык. Всего-то и оставалось, что привести в порядок exception handling до степени, достойной "безопасного языка" и можно, не боясь, Ada в каждый танк засовывать. А без этого ракеты до Венеры не будут долетать, а в городах начнут самопроизвольно взрываться атомные бомбы. Как тогда, так и сейчас наличные подсистемы не могли гарантировать декларативным образом (т.е. нельзя было написать гарантирующий это компилятор), что полученная программа - не испытает краха из-за отсутствия обработчика верхнего уровня - полученная ошибка будет обработана в "правильном месте" и "правильным образом" - Попытка Java в этом смысле навязать разработчику обязанность разбираться с тем, что проектировщики ( кхм... а тут уже не языка, а библиотечной части, что является совершенно отдельной частью Марлезонского балета) посчитали необходимым обязать его разбираться, хоть и бравая, но сама по себе не может служить и не является гарантией вообще ничего, кроме 100% резервированного места под try-catch. Исключения вносят в код семантику косвенного управления. Разрывая "естественные" границы единиц кода. Превращая семантику вычисления в необозримую. Попытка проверяемых исключений локализовать обязанность по обработке таких исключений не меняет существа дела как потому, что допускает возможность их пере-испускания на верхний уровень, так и потому что обычные, не проверяемые, исключения при этом не перестают существовать. Даже там, где требование компилятора сработало и ошибка оказалась обработанной в месте своего возможного появления, у компилятора нет никаких ресурсов установить, что обработана она была правильно с точки зрения заявителя такой ошибки - открытый файл окажется закрытым и бомба самопроизвольно не взорвется. Иначе не было бы никакой нужды спустя 20 лет от реализации такой зашибись-возможности вживлять в язык try-with-resources То есть существо дела в том, что это не работа "доказывающего правильность программы безопасного" компилятора, а всего лишь хинт программисту - тут у тебя бяка заготовлена - смотри там - не проморгай. Причем хинт в виде зубной боли (или, как пишут особо креативные англоязычные коллеги- заносы в заднице). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2016, 06:22 |
|
||
|
подскажите что почитать про исключения
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2016, 08:17 |
|
||
|
подскажите что почитать про исключения
|
|||
|---|---|---|---|
|
#18+
maytonДля меня к примеру совершенно неочевиден МЕТОД которым я должен отработать InterruptException. Я по сути не знаю как его отработать. Неправда . Вы получили сигнал о досрочном завершении и вы не знаете, что надо делать в вашем коде??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2016, 08:42 |
|
||
|
подскажите что почитать про исключения
|
|||
|---|---|---|---|
|
#18+
maytonAlexey TominА ошибка чётности памяти? А как современный разработчик должен реагировать на ошибку чётности памяти? Обычно никак. Но может быть ньюанс. Но я другой вопрос задал. Если язык заявляет что "у нас исключений нет", то они должны как-то разрулить исключения, выбрасываемые процессором. Т.е. метод Код: sql 1. должен возвращать уже пару (double, error). Причём ДАЖЕ ЕСЛИ вызывающий ГАРАНТИРУЕТ, что b != null. Как раз ГОшный механизм ГОден для "контролируемых исключений" :) типа IOException. А вот для Runtime (NPE, деление на ноль) он ОЧЕНЬ НЕУДОБЕН - из-за того, что его надо ВЕЗДЕ ждать. Как раз суть деления исключений на 3 части в java - это деление на "это надо ждать и быть к этому готовым", "с этим дальше разберёмся, если что" и "конец света это не наша проблема". При том, что какой-нибудь кэш вполне может ловить OutOfMemoryError и освобождать часть кэша. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2016, 10:46 |
|
||
|
подскажите что почитать про исключения
|
|||
|---|---|---|---|
|
#18+
Alexey TominПри том, что какой-нибудь кэш вполне может ловить OutOfMemoryError и освобождать часть кэша. Один из вариантов предлагают на http://stackoverflow.com/questions/2679330/catching-java-lang-outofmemoryerror Я-бы добавил что мы ограничены в выборе действий внутри блока catch. Тоесть мы должны исходить из того что new Something() требуемого размера уже не работает. С гарантией могут только отработать native вызовы к примеру. Или как говорил Дядя Фёдор - чтобы продать что нибудь ненужное - надо купить что нибудь ненужное а у нес денег нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2016, 14:36 |
|
||
|
подскажите что почитать про исключения
|
|||
|---|---|---|---|
|
#18+
Alexey TominКак раз суть деления исключений на 3 части в java - это деление на "это надо ждать и быть к этому готовым", "с этим дальше разберёмся, если что" и "конец света это не наша проблема". С концом света разобрались. По поводу исключений 1 и 2 типов. Не слишком ли высокую цену заплатили разработчики Java? По сути механизм try{} catch нам представляется мощным макро-процессором для многочисленных Код: java 1. Но является ли плата за его обязательное декларирование и обработку ГАРАНТИЕЙ надёжности кода. Тоесть мы обязаны надёжности Java-коду благодаря ОБЯЗАТЕЛЬНОЙ отработке протоколов контролируемых исключений или надёжность была ВСЕГДА а протокол это просто РИТУАЛ который мы каждый день исполняем просто так... потому что Гослинг и иже с ними так решили. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2016, 14:51 |
|
||
|
подскажите что почитать про исключения
|
|||
|---|---|---|---|
|
#18+
а какова плата за использование эксепшнов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2016, 15:37 |
|
||
|
подскажите что почитать про исключения
|
|||
|---|---|---|---|
|
#18+
mayton... или надёжность была ВСЕГДА а протокол это просто РИТУАЛ который мы каждый день исполняем просто так... потому что Гослинг и иже с ними так решили. Все наоборот. Любая система построенная на пробросе и "управлении обработкой" исключений - с гарантией ненадежна . И сам Гослинг никогда не был и не есть "глупый человек". Ну, может быть, он всего лишь "недостаточно гениальный". Это на самом деле была бравая попытка внести в синтаксис языка, прямо в сигнатуру метода, список возможных исключений, возможно генерируемых методом с тем, чтобы, как казалось, через такое усовершенствование усилить надежность получаемого кода. Это не дало фактического увеличения надежности, не создало инструментов доказательства надежности кода поверх такого захода и, по факту, привело к замусориванию кода. В то, что это "зашибись-идея" тогда на самом деле думали "все". Страуструп на абсолютно полном серьезе, под давлением "комитета" или без, но много лет планировал ввести эту "клевую фишку" в С++. Окончательно эта идея умерла в мире С++ совсем недавно - лет пять назад - не более. Сейчас не могу привести ссылку, но где-то но где-то Хоар высказывался в таком духе, что что в смысле надежности языка на первом месте стоит даже не проблема обработки ошибок, а, куда более простая, проблема не инициализированных переменных. Так вот Хоар винил лично себя (не Вирта), говоря о том, что лично совершил многомиллиардную ошибку (стоившей все отрасли много миллиардов потерь из-за автоматического непрерывного воспроизведения в языках-последователях), разрешив в ALGOL W сравнения указателей с null. "Безопасная" Java прошла мимо сего обстоятельства, даже не заметив его. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2016, 16:04 |
|
||
|
подскажите что почитать про исключения
|
|||
|---|---|---|---|
|
#18+
maytonЯ-бы добавил что мы ограничены в выборе действий внутри блока catch. Тоесть мы должны исходить из того что new Something() требуемого размера уже не работает. С гарантией могут только отработать native вызовы к примеру.Я, конечно, дико извиняюсь, что встреваю в высокоинтеллектуальную эскападу, но стратегии "OOM-парашюта" уже очень много лет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2016, 16:14 |
|
||
|
подскажите что почитать про исключения
|
|||
|---|---|---|---|
|
#18+
booby Любая система построенная на пробросе и "управлении обработкой" исключений - с гарантией ненадежна Вас кто-то обманул, т.к. механизм исключений не является гарантом надёжности чего-бы то ни было. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2016, 16:18 |
|
||
|
подскажите что почитать про исключения
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorovbooby Любая система построенная на пробросе и "управлении обработкой" исключений - с гарантией ненадежна Вас кто-то обманул, т.к. механизм исключений не является гарантом надёжности чего-бы то ни было. такая формулировка тоже годится, даже если кто-то меня обманул. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2016, 16:23 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39186793&tid=2124257]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
140ms |
get topic data: |
7ms |
get forum data: |
3ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 209ms |
| total: | 428ms |

| 0 / 0 |
