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

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

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

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

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

http://pastebin.com/mRhb2WVm

"ValidNumberException" си е мой създаден exception.

0
07/06/2015 17:09:26
Filkolev avatar Filkolev 4485 Точки

Няма логика ексепшъна да се казва ValidNumberException, едва ли не въвеждането на валидно число е нещо ненормално. Предполагам по-скоро имаш предвид InvalidNumberException.

0
antonp1p2 avatar antonp1p2 17 Точки

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

0
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
denitsa.dobreva avatar denitsa.dobreva 5 Точки

Здрасти, аз чета и препрочитам условието на първа задача, и знам, че едва ли има значение този въпрос, но все пак - има ли причина да customize-ваш messages на exceptions? Да, определено е по-добре от чисто софтуерно инженерна гледна точка, и е лесно да се направи, но не отговаря на условието да се принтва "Invalid number" (only).

0
Filkolev avatar Filkolev 4485 Точки

Да се принтира "invalid number" е съобщение към потребителя, него не го интересува какъв ексепшън е бил хвърлен. Ексепшъните са за програмистите и за тях е важно самият ексепшън да съдържа достатъчно подробна информация каква грешка е възникнала, къде и защо, за да могат да разследват. 

0