Професионална програма
Loading...
GalyaGeorgieva avatar GalyaGeorgieva 88 Точки

[Homework] OOP - Exception Handling - юни 2015

Имаше стари теми от предни курсове за това домашно, но предпочетох да си направим отделна за нашия курс.
Само две задачи са, но предпочитам, ако имам грешки да ги обсъдя навреме с вас.
ТУК са решенията.
 

Тагове:
2
C# OOP Basics
pataroka avatar pataroka 319 Точки

@GalyaGeorgieva Галя, на първа задача - ако четеш данните от конзолата извън try-catch блока, какво правиш с null или empty стринг. На втора задача - не разбирам защо хардкодваш крайната стойност на рейнджа - изискването е да направиш метод дето сравнява по зададен рейндж и след това да го ползваш в програмата. Трябва да подаваш началната и крайна позиция на рейнджа като аргументи на метода, а не да подаваш началната и числото. Респективно четенето на числото при тези условия трябва да се случва вътре в метода и там да се мятат съответните ексепшъни. 

@antonp1p2 Колега, не схващам идеята да правиш проверка в метода дали числото е в рейнджа на старт и енд и  после да правиш хардкодната проверка дали е между 1 и 100 ?!WTF?! Може би не е зле да прочетеш условието отново - този път по-внимателно.

Също така не виждам никой да прави проверка ако числото 99 е въведено преди брояча да стигне 1. Ако това се случи, програмата ще влезе в безкраен цикъл, защото каквото и число да и подадете, то ще е извън рейнджа 99...100.

Аз така ги виждам нещата - 02.OOP-Exception-Handling-Homework

2
nikola.m.nikolov avatar nikola.m.nikolov 830 Точки

Защо и в двете задача си хардкоднал съобщението в catcha-a??? Я си представи, че е малко по-голяма програмата и на няколко места хвърляш един и същи exception, но с различен текст? В същото време при хвърлянето на Exception-а нямаш никакъв message.

0
09/06/2015 14:48:47
pataroka avatar pataroka 319 Точки

Съобщението в catch-a е за юзъра - не за дивелопъра - ако програмата е по-голяма - и ексепшъните се структурират другояче, и месиджите могат да се извадят в отделен файл. Не съм слагал месиджи при хвърянето на ексепшъните щот ме мързеше...

Я виж сега харесва ли ти... wink

0
GalyaGeorgieva avatar GalyaGeorgieva 88 Точки

@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.)

поправеният КОД

0
09/06/2015 16:04:03
pataroka avatar pataroka 319 Точки

Format exception хваща и празен стринг в случая, защото празния стринг не може да се парсне, а не защото е празен стринг. И ако беше оставила този ред 

string str = Console.ReadLine();

извън try блока - щеше да ти излиза ексепшън, ама нямаше да го хващаш, респективно - юзъра не го вижда и не знае защо му е гръмнала програмата.

Не знам, ама като гледам реакциите на хората, мисля си, че трябва да се дадат повече разяснения за съобщения при throw на ексепшъни и съобщения при catch - първото е за дивелопъра -  да знае какво се е сгромолясало - това юзъра не е задължително да го вижда. Второто е за юзъра - да му каже какво да направи като хората, за да му работи програмата. Май доста хора не правят разлика и може би това е защото все още пишем конзолни приложения и печатаме всичко на конзолата. Ако не го обяснявам добре, моля, някой от лекторите да се намеси...

П.П. а и в тази връзка @nikola.m.nikolov - нормално е да се хвърля на юзъра различен текст за един и същи ексепшън при различни методи на програмата - ако аргументите дето подава са различни.

1
09/06/2015 18:10:32