исключений в конструкторе, вы же как хотите
                  
                  
                
Выделение ресурсов должно быть обёрнуто в соответствующие RAII классы
Ваше выделение ресурсов должно быть обернуто в RAII обертки
все успешно выделенные ресурсы будут освобождены
Не стоит этому остальных только учить
 Ramil
                          Rizvanov
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Ramil
                          Rizvanov
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  А если сам класс raii обертка?😊
Все его члены должны быть также RAII обертками над своими ресурсами, речь об этом
 Ramil
                          Rizvanov
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Ramil
                          Rizvanov
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  Все ваши раии обертки где-то останавливаются😊
"Вложенность владения" ресурсами как правило невелика, плюс ко всему для бОльшего числа случаев подойдут стандартные классы вроде unique_ptr с кастомным deleter'ом
Самая глубокая RAII обертка, которая занимается хранением ресурса, и не должна бросать исключений просто исходя из её функциональности
И что делать, если ресурса не дали?
Не понимаю проблему - будет null внутри
 Ramil
                          Rizvanov
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Ramil
                          Rizvanov
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  Ну ок, допустим просто удалить поля бывает мало, может быть нужно подготовить объекты для удаления, за всем этим нужно следить. А вы как сами считаете, исключения в конструкторе норма? Практикуете?
Я считаю, что исключения в конструкторе можно использовать по назначению, но не пихаю их во все возможные места
Еще один момент, как вы напишете копирующий оператор присваивания, если у вас конструктор не бросает исключений? Как выделите копию ресурса и обработаете все связанные с этим ошибки? А если копируете "неинициализированный" объект? Вы серьезно возьметесь утверждать, что это лучше, чем copy-and-swap в три строки? Особенно, если класс владеет несколькими ресурсами сразу
"Подготовкой для удаления" занимается деструктор RAII обертки того объекта, который нужно "подготовить"
 Ramil
                          Rizvanov
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Ramil
                          Rizvanov
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  От bad alloc мы никак не уйдем, но мой посыл использовать исключения по минимуму
На bad_alloc свет клином не сошелся и я бы сказал даже, что его-то как раз обрабатывать почти никогда нет смысла
Правда ли что если вы словили bad alloс то уже всё)
 Ramil
                          Rizvanov
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Ramil
                          Rizvanov
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  А если нужно распутать поля перед вызовом их деструкторов? Деструктор поля не может знать о том куда он вовлечён в полной мере
Потому и "почти"
Наоборот, чаше всего только так и можно
Обсуждают сегодня