Поводження з винятками в C ++ обмежується спробою / кидати / ловити. На відміну від Object Pascal, Java, C # і Python, навіть у C ++ 11, finally
конструкція не була реалізована.
Я бачив дуже багато літератури на C ++, яка обговорювала "безпечний код для виключення". Ліппман пише, що безпечний код для виключення є важливою, але складною, важкою темою, що виходить за межі його Праймера - що, мабуть, означає, що безпечний код не є основним для C ++. Герб Саттер присвячує 10 глав цій темі у своєму винятковому С ++!
І все ж мені здається, що багато проблем, які виникали при спробі написання "безпечного коду для виключення", можна було б досить добре вирішити, якби finally
конструкція була реалізована, що дозволяє програмісту переконатися, що навіть у випадку винятку програма може бути відновлена до безпечного, стабільного, негерметичного стану, близького до точки розподілу ресурсів та потенційно проблемного коду. Як дуже досвідчений програміст Delphi і C #, я використовую спробу., Нарешті, досить широко блокується в моєму коді, як і більшість програмістів на цих мовах.
Розглядаючи всі "дзвіночки", застосовані в C ++ 11, я з подивом виявив, що "нарешті" все ще не було.
Отже, чому finally
конструкція ніколи не була реалізована в C ++? Це дійсно не дуже складна або передова концепція, щоб зрозуміти, і йде довгий шлях до допомоги програмісту написати «код безпечного виключення».
finally
в C ++ немає, і які методи для обробки виключень використовуються замість нього?" діє та на тему для цього сайту. Існуючі відповіді це добре висвітлюють, я думаю. Перетворюючи це на дискусію на тему: "Чи є дизайнери C ++ тим, що вони не включають в себе finally
корисність?" та "Чи finally
слід додати до C ++?" і вести дискусію через коментарі до цього питання, і кожна відповідь не відповідає моделі цього веб-сайту з питань запитання.