[Homework] OOP - Exception Handling - юни 2015
Имаше стари теми от предни курсове за това домашно, но предпочетох да си направим отделна за нашия курс.
Само две задачи са, но предпочитам, ако имам грешки да ги обсъдя навреме с вас.
ТУК са решенията.
Защо и в двете задача си хардкоднал съобщението в catcha-a??? Я си представи, че е малко по-голяма програмата и на няколко места хвърляш един и същи exception, но с различен текст? В същото време при хвърлянето на Exception-а нямаш никакъв message.
Съобщението в catch-a е за юзъра - не за дивелопъра - ако програмата е по-голяма - и ексепшъните се структурират другояче, и месиджите могат да се извадят в отделен файл. Не съм слагал месиджи при хвърянето на ексепшъните щот ме мързеше...
Я виж сега харесва ли ти...
@pataroka Това със забележката за първа задача не го разбрах. По принцип FormatException ми хваща и празен стринг, но не е проблем да се добави още една проверка if (string.IsNullOrEmpty()) и да хвърля друго изключение.
Що се отнася до втората задача, според мен логиката си е читава, но все пак махнах хардкодването и сега се задава крайна стойност на range. (Подвела съм се от изречението: Using this method write a program that enters 10 numbers: a1, a2, … a10, such that 1 < a1 < … < a10 < 100.)
поправеният КОД
Format exception хваща и празен стринг в случая, защото празния стринг не може да се парсне, а не защото е празен стринг. И ако беше оставила този ред
извън try блока - щеше да ти излиза ексепшън, ама нямаше да го хващаш, респективно - юзъра не го вижда и не знае защо му е гръмнала програмата.
Не знам, ама като гледам реакциите на хората, мисля си, че трябва да се дадат повече разяснения за съобщения при throw на ексепшъни и съобщения при catch - първото е за дивелопъра - да знае какво се е сгромолясало - това юзъра не е задължително да го вижда. Второто е за юзъра - да му каже какво да направи като хората, за да му работи програмата. Май доста хора не правят разлика и може би това е защото все още пишем конзолни приложения и печатаме всичко на конзолата. Ако не го обяснявам добре, моля, някой от лекторите да се намеси...
П.П. а и в тази връзка @nikola.m.nikolov - нормално е да се хвърля на юзъра различен текст за един и същи ексепшън при различни методи на програмата - ако аргументите дето подава са различни.