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

Въпрос относно използването на Exceptions в Judge системата (OOP Introduction - Encapsulation and Validation)

Здравейте, решавам задача 04. Pizza Calories от OOP Introduction - Encapsulation and Validation, и бих искал да попитам защо Judge системата ми връща грешка, когато използвам Exception, като в условието ИЗРИЧНО е казано, че трябва да се хвърли Exception - "throw an exception with the message 'Number of toppings should be in range [0..10].' ". При третия нулев тест на тази задача ми казва, че очакваният ИЗХОД трябва да бъде "Number of toppings should be in range [0..10].", а не Exception. Ето ми го кода: 

Toppings - https://pastebin.com/1gTeKdwf

Dough - https://pastebin.com/N7PFS6NZ

Pizza - https://pastebin.com/j7nzdWHf

Program - https://pastebin.com/b5W4P9EP

 

Благодаря предварително!

 

EDIT: Реших задачата със 100/100 като използвах Console.WriteLine() за да отпечатам очаквания изход, и System.Environment.Exit(1) за да спра изпълнението на програмата. Ако това наистина е начинът, по който програмата трябва да се реши, тогава ЗАЩО ни е казано да хвърлим Exception? Благодаря.

0
Module: C# DB 01/11/2017 15:38:27
ambiorix avatar ambiorix 640 Точки
Best Answer

Здравей. Не те разбирам напълно, но в задачата се има предвид, че всички тези грешки при валидация на всеки клас трябва да хвърлят exception. Това е генерална и задължителна практика, защото всеки обект трябва да се грижи за собственото си състояние и да следи то да е валидно.

Няма нужда да спираш програмата ръчно, а можеш пак да сложиш exception в Pizza класа. Алгоритъмът на високо ниво е следният:

1. четеш вход от конзолата;

2. опитваш да създадеш обект с входните данни(тесто, топинги и т.н.)

2.1 ако при създаването на някой обект хвърлиш exception, то той трябва да бъде хванат (try{} catch(){}) и изписан на конзолата, което приключва програмата

3. при успешно създаване на цялата пица - принтираш информацията за калориите ѝ и приключваш програмата

Относно примерен output 3 - грешен е(трябва да дава "Invalid type of dough."), защото задачата е модифицирана от същата такава, но за OOP Basics курса. Докладвах грешката през системата за материалите.

Ето моята имплементация за допълнително разяснение: https://github.com/gaydov/Softuni-DB-Advanced/tree/master/2EncapsulationAndValidation/PizzaCalories

0
01/11/2017 19:40:44
vaskoleon avatar vaskoleon 23 Точки

Не бях разбрал, че Exception-ите трябва да бъдат хванати; не си спомням да съм виждал такава инструкция в задачите. Благодаря!

0
01/11/2017 20:45:53
ambiorix avatar ambiorix 640 Точки

Това, че exception-ите трябва да бъдат хванати е генерален похват в програмирането така че го имай предвид при всички задачи. Идеята е грешката да бъде уловена и обработена по някакъв начин - показана на конзолата, върната на потребителя като променен текст(например "Не е въведено първо име" говори повече отколкото "Object reference not set to an instance of an object"), пратена на друга програма която да прави нещо за да я поправи и т.н.

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.