CaptainFlint wrote: |
Сознательно грохать Тотал при возникновении проблемы в плагине — это, конечно, сильно. |
CaptainFlint wrote: |
Лично я бы такой плагин первым делом снёс. |
CaptainFlint wrote: |
В API не зря предусмотрены различные коды ошибок в качестве возвращаемых значений. Если возникает нештатная ситуация, считается, что разработчик плагина должен её обработать в своём коде и вернуть ошибку Тоталу, чтобы тот понял, что операция не удалась. |
CaptainFlint wrote: |
Ну, доступные ресурсы — это такая вещь… Сейчас он свалился от нехватки памяти, а следующий запрос на выделение пройдёт успешно из-за того, что какая-то жирная программа освободила блок или вовсе завершила работу. |
CaptainFlint wrote: |
Кроме того, крошечные блоки могут превратиться в некрошечные, если их размер зависит от внешних факторов. Например, пользователь сдуру открыл десятигигабайтный файл, плагин начал его читать в память (крошечными блоками), исчерпал объём, получил исключение и свалился. |
CaptainFlint wrote: |
Грохать весь Тотал в такой ситуации неразумно, ибо ресурсов в системе для нормальной работы вполне достаточно. |
remittor wrote: |
Получается, что TotalCmd можно болт забивать на ловлю исключений, а нам нельзя? |
remittor wrote: |
Зачем весь десятигигабайтный файл читать целиком в память? |
remittor wrote: |
Что должен делать плагин, когда в конструкторе какого либо класса произошёл EOutOfMemory при инициализации динамической строки System.String/std::string ?
Из конструктора код ошибки не возвратить. Нужно обрамлять в try/catch весь код. |
output generated using printer-friendly topic mod. All times are GMT + 4 Hours