powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Когда подавлять исключения а когда пропускать?
25 сообщений из 69, страница 2 из 3
Когда подавлять исключения а когда пропускать?
    #38559946
locked
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
super-codeВася Уткинпропущено...

Есть и третий вариант, когда неизвестно невозможно или можно работать дальше - неизвестное исключение/код возврата. В этом случае предполагается худший вариант - невозможно.
Но идут всегда на компромисс, просто все потоки и подключения изначально поделены между несколькими процессами с изолированной памятью, и падает только один из процессов. Лучше если 10% соединений передподключатся, чем вместо 1 000 спишется 1 000 000 руб в биллинге.

И с вами не согласны разработчики .NET и IIS, пример приводил. Также не согласны разработчики ms sql server. Попробуйте в ms sql server зарегистрировать свою сборку, при её вызове бросать exception. Сделайте запрос sql к серверу и с вызовом вашей сборки. Служба sql server не упадет, а только ответит ошибкой - служба обрабатывает любое исключение, даже не зная о чем оно. А если служба знает, что за исключение и уверена, что дальше работать нельзя, то тогда падает. И ни на какие части подключенные к sql server не делятся путем запуска нескольких процессов.

Это архитектура приложения. Например в MSSQL расширенная процедура запускается в изолированном процессе. Нечто подобное происходит и с запуском .NET сборки.
...
Рейтинг: 0 / 0
Когда подавлять исключения а когда пропускать?
    #38559954
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы спорите ниочём. Это вопрос протокола и договорённостей. И возможно стоит обсудить
доп. условия. Язык. Среда. Сильною/слабую связность компонентов. Модульность. Выгружаемость.
...
Рейтинг: 0 / 0
Когда подавлять исключения а когда пропускать?
    #38559987
Вася Уткин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
super-codeВася Уткинпропущено...

Есть и третий вариант, когда неизвестно невозможно или можно работать дальше - неизвестное исключение/код возврата. В этом случае предполагается худший вариант - невозможно.
Но идут всегда на компромисс, просто все потоки и подключения изначально поделены между несколькими процессами с изолированной памятью, и падает только один из процессов. Лучше если 10% соединений передподключатся, чем вместо 1 000 спишется 1 000 000 руб в биллинге.

И с вами не согласны разработчики .NET и IIS, пример приводил. Также не согласны разработчики ms sql server. Попробуйте в ms sql server зарегистрировать свою сборку, при её вызове бросать exception. Сделайте запрос sql к серверу и с вызовом вашей сборки. Служба sql server не упадет, а только ответит ошибкой - служба обрабатывает любое исключение, даже не зная о чем оно. А если служба знает, что за исключение и уверена, что дальше работать нельзя, то тогда падает. И ни на какие части подключенные к sql server не делятся путем запуска нескольких процессов.
А вы уверены, что ваша процедура запускается в одном процессе с самой СУБД, и что не закрывается весь процесс в котором запускается процедура? И что если произойдет критическое исключение в коде самой СУБД, то СУБД продолжит работать?
Разработчики .NET и IIS согласны со здравым смыслом и со мной :)
...
Рейтинг: 0 / 0
Когда подавлять исключения а когда пропускать?
    #38560004
super-code
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вася Уткин, что в ms sql server, а также IIS и .NET не появляется отдельного процесса - уверен. Так, что с Вашей практикой?
...
Рейтинг: 0 / 0
Когда подавлять исключения а когда пропускать?
    #38560009
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonК примеру совершенно непонятно как надо обрабатывать java.lang.OutOfMemoryError. ... Но что делать в рилтайме?
Ну например:

0. Отпустить прибережённый для этой цели резерв
1. Гробануть обработку конкретного запроса, если этого не случилось в ходе разматывания стека
2. Если после этого памяти стало нормально, продолжить работу, опционально настучав по голове автору запроса на тему "поумерь аппетиты"
3. Если после этого памяти останется мало, сбросить всяческие кэши и подрезать параметры типа "максимальный размер", "максимум одновременно работающих" итп.
4. Когда памяти станет нормально, не забыть снова выделить аварийный буфер
5. Если пункт 3 начинает повторяться с надоедливым постоянством, написать разработчикам "поднимите свои задницы и ищите, где утечка памяти, пока я совсем не сдох", улучшить момент и перезапуститься
...
Рейтинг: 0 / 0
Когда подавлять исключения а когда пропускать?
    #38560012
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
super-codeskyANA, и как же он получит ответ на http-запрос, если в коде не обработаете это исключение?Простите, а что он получит по Вашему?
...
Рейтинг: 0 / 0
Когда подавлять исключения а когда пропускать?
    #38560013
super-code
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton, я с Вами согласен. Существуют ситуации, когда надо обрабатывать любое исключение, а существуют, когда не надо. И это вопрос архитектуры. Но Вася Уткин уверен, что подход настоящего джедая один - не обрабатывать неизвестные исключения и код вида:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
void PluginExecute(plugin)
{
 try
 {
   plugin->Execute();
 }
 catch(Exception ex)
{
  if (ex not in FatalErrorList)
    FailPlugin(ex); // без throw далее этого exception
  else throw ex;
}

}



Это говнокод.
...
Рейтинг: 0 / 0
Когда подавлять исключения а когда пропускать?
    #38560017
super-code
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANA, если мой процесс - веб-сервер, и он упадет. То клиент ничего не получит. У вас другое мнение на этот счет?
...
Рейтинг: 0 / 0
Когда подавлять исключения а когда пропускать?
    #38560022
locked
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
super-codeВася Уткин, что в ms sql server, а также IIS и .NET не появляется отдельного процесса - уверен. Так, что с Вашей практикой?
в случае с .NET появляется виртуальная машина. В случае с реальным кодом - процесс.
...
Рейтинг: 0 / 0
Когда подавлять исключения а когда пропускать?
    #38560033
super-code
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
locked, только что создал новый сайт на iis 7. Страница на asp.net (.net 4.0) при загрузке ждет 3 секунды (sleep), потом бросает исключение.

Следил за кол-вом процессов. Оно - 39, как до запуска страницы, так во время работы, так и после.
Процессов новых не появлялось, все выполняется там же. Осталось понять, что вы подразумеваете под виртуальной машиной (vmware) тоже не запустился?




Если единственный аргумент не перехватывать неизвестные исключения - это возможная порча памяти. Так я открою вам глаза - в windows можно записать данные и в память чужого процесса. Поэтому советую после неизвестного исключения - сразу перезагружать компьютер - так надежнее.
...
Рейтинг: 0 / 0
Когда подавлять исключения а когда пропускать?
    #38560035
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
super-codeskyANA, если мой процесс - веб-сервер, и он упадет. То клиент ничего не получит. У вас другое мнение на этот счет?Не, ну если веб-сервер упадёт...

А понял, я с утра не внимательно прочитал Ваше первое сообщение. Там речь о веб-сервере. Я же прочитал как веб-сервис.
Ошибочка вышла
...
Рейтинг: 0 / 0
Когда подавлять исключения а когда пропускать?
    #38560041
super-code
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
locked, если под виртуальной машиной подразумевается новый домен приложения:
http://msdn.microsoft.com/en-us/library/system.appdomain.createdomain(v=vs.90).aspx

То было бы очень интересно послушать, как это реализовано без перехвата неизвестных исключений.
...
Рейтинг: 0 / 0
Когда подавлять исключения а когда пропускать?
    #38560043
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
super-codeЕсли единственный аргумент не перехватывать неизвестные исключения - это возможная порча памяти. Так я открою вам глаза - в windows можно записать данные и в память чужого процесса. Поэтому советую после неизвестного исключения - сразу перезагружать компьютер - так надежнее.
Но это по-прежнему никак не мешает испортить память без всяких неизвестных исключений.
...
Рейтинг: 0 / 0
Когда подавлять исключения а когда пропускать?
    #38560046
locked
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
super-codelocked, только что создал новый сайт на iis 7. Страница на asp.net (.net 4.0) при загрузке ждет 3 секунды (sleep), потом бросает исключение.

Следил за кол-вом процессов. Оно - 39, как до запуска страницы, так во время работы, так и после.
Процессов новых не появлялось, все выполняется там же. Осталось понять, что вы подразумеваете под виртуальной машиной (vmware) тоже не запустился?

я имел ввиду "виртуальная машина .NET"
...
Рейтинг: 0 / 0
Когда подавлять исключения а когда пропускать?
    #38560058
super-code
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
locked, "виртуальная машина .net" работает внутри процесса. Например, с каждым новым процессом на .net появляется свой сборщик мусора для этого процесса. Т.е. IIS в своем процессе запустил мой код на .net, перехватил неизвестное исключение, и продолжает работать.
...
Рейтинг: 0 / 0
Когда подавлять исключения а когда пропускать?
    #38560064
locked
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
super-codelocked, "виртуальная машина .net" работает внутри процесса. Например, с каждым новым процессом на .net появляется свой сборщик мусора для этого процесса. Т.е. IIS в своем процессе запустил мой код на .net, перехватил неизвестное исключение, и продолжает работать.
Твой "код на .NET" это IL код который интерпретируется "виртуальной машиной .NET" и твои эксепшены в нем никак не связаны с реальными эксепшенами IIS процесса.
...
Рейтинг: 0 / 0
Когда подавлять исключения а когда пропускать?
    #38560068
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer0. Отпустить прибережённый для этой цели резерв
1. Гробануть обработку конкретного запроса, если этого не случилось в ходе разматывания стека
2. Если после этого памяти стало нормально, продолжить работу, опционально настучав по голове автору запроса на тему "поумерь аппетиты"
3. Если после этого памяти останется мало, сбросить всяческие кэши и подрезать параметры типа "максимальный размер", "максимум одновременно работающих" итп.
4. Когда памяти станет нормально, не забыть снова выделить аварийный буфер
5. Если пункт 3 начинает повторяться с надоедливым постоянством, написать разработчикам "поднимите свои задницы и ищите, где утечка памяти, пока я совсем не сдох", улучшить момент и перезапуститься
Нет такой практики. Держать резервы.

По поводу настучать по голове автору - полностью согласен. Но это уже после краша приложения.
...
Рейтинг: 0 / 0
Когда подавлять исключения а когда пропускать?
    #38560070
super-code
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
locked, что значит никак не связаны?
1. Процесс тот же? - тот же;
2. Exception был? - был;
3. Его кто-то обработал или процесс убал? - нет процесс не упал, exception обработан.
4. Мы его в своем коде обратывали? - нет, его обработал iis и среда .net. Вот он ответ на твой вопрос.

Или ты считаешь, как-то по другому?

Если я на той же странице сделаю бесконечную рекурсию, то получится exception - stack overflow. Тогда весь процесс iis упадет, и это будет видно в логах windows.
...
Рейтинг: 0 / 0
Когда подавлять исключения а когда пропускать?
    #38560072
super-code
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonНет такой практики. Держать резервы.
Ты просто тему про хвостики в массивах не читал :D
...
Рейтинг: 0 / 0
Когда подавлять исключения а когда пропускать?
    #38560075
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
super-codemaytonНет такой практики. Держать резервы.
Ты просто тему про хвостики в массивах не читал :D
Это в каком языке/технологии?
...
Рейтинг: 0 / 0
Когда подавлять исключения а когда пропускать?
    #38560084
super-code
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton, первоисточник найти не смог, но продолжение тут
http://www.gamedev.ru/flame/forum/?id=122958
...
Рейтинг: 0 / 0
Когда подавлять исключения а когда пропускать?
    #38560106
Вася Уткин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
super-codemayton, я с Вами согласен. Существуют ситуации, когда надо обрабатывать любое исключение, а существуют, когда не надо. И это вопрос архитектуры. Но Вася Уткин уверен, что подход настоящего джедая один - не обрабатывать неизвестные исключения и код вида:
Вот это вы уже сами придумали.

super-codeЕсли единственный аргумент не перехватывать неизвестные исключения - это возможная порча памяти. Так я открою вам глаза - в windows можно записать данные и в память чужого процесса.
И как же это сделать без разделяемой памяти и привилегий?
...
Рейтинг: 0 / 0
Когда подавлять исключения а когда пропускать?
    #38560109
super-code
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вася Уткин, программу ArtMoney видел?
...
Рейтинг: 0 / 0
Когда подавлять исключения а когда пропускать?
    #38560130
super-code
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вася УткинВот это вы уже сами придумали.

Я заявил, что бывают ситуации, когда стоит обработать неизвестное исключение и НЕ бросать его далее наружу, привел, как пример - веб-сервис. Ты мне ответил:
Вася Уткин...неизвестное исключение/код возврата. В этом случае предполагается худший вариант - невозможно.
Но идут всегда на компромисс, просто все потоки и подключения изначально поделены между несколькими процессами с изолированной памятью, и падает только один из процессов. Лучше если 10% соединений передподключатся, чем вместо 1 000 спишется 1 000 000 руб в биллинге.

Я из этой фразы сделал вывод, что ты со мной не согласен, и считаешь, что никогда не следует обрабатывать неизвестное исключение. Или я неверный вывод сделал, и ты не согласен, только с моим примером?
...
Рейтинг: 0 / 0
Когда подавлять исключения а когда пропускать?
    #38560136
super-code
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
super-code, как пример, я привел - веб-СЕРВЕР, опечатка.
...
Рейтинг: 0 / 0
25 сообщений из 69, страница 2 из 3
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Когда подавлять исключения а когда пропускать?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]