Запитання з тегом «exceptions»

Виняток - це явище в процесі подання заявки, яке вимагає відхилення від нормального потоку програми.

7
Чому в C ++ немає конструкції "нарешті"?
Поводження з винятками в C ++ обмежується спробою / кидати / ловити. На відміну від Object Pascal, Java, C # і Python, навіть у C ++ 11, finallyконструкція не була реалізована. Я бачив дуже багато літератури на C ++, яка обговорювала "безпечний код для виключення". Ліппман пише, що безпечний код …
57 c++  exceptions 

12
Невже ловити загальні винятки насправді погано?
Я зазвичай згоден з більшістю попереджень про аналіз коду, і я намагаюся їх дотримуватися. Однак мені з цим важче: CA1031: Не вловлюйте загальні типи виключень Я розумію обґрунтування цього правила. Але на практиці, якщо я хочу вжити однакових дій незалежно від кинутого винятку, чому я б поводився з кожним конкретно? …
57 c#  design  exceptions 

9
Викиньте виняток або нехай код не вдасться
Мені цікаво, чи є плюси і мінуси проти цього стилю: private void LoadMaterial(string name) { if (_Materials.ContainsKey(name)) { throw new ArgumentException("The material named " + name + " has already been loaded."); } _Materials.Add( name, Resources.Load(string.Format("Materials/{0}", name)) as Material ); } Цей метод для кожного nameслід застосовувати лише один раз. …
52 exceptions 

3
Чому специфікації виключень погані?
Ще в школі близько 10 років тому вони вчили вас використовувати специфікатори виключень. Оскільки мій досвід є одним із них, програмістів Torvaldish C, який вперто уникає C ++, якщо не змушений до цього, я стикаюся лише на C ++, і коли я все ще використовую специфікатори виключень, оскільки саме цього …

6
Вирішення винятків для перевірених Java
Дуже ціную нові функції Java 8 щодо інтерфейсів лямбдасів та методів за замовчуванням. Та все ж мені все одно нудно за перевіреними винятками. Наприклад, якщо я просто хочу перерахувати всі видимі поля об’єкта, я хотів би просто написати це: Arrays.asList(p.getClass().getFields()).forEach( f -> System.out.println(f.get(p)) ); Тим не менш, оскільки getметод може …

4
Чому ітератори в Python створюють виняток?
Ось синтаксис ітераторів на Java (дещо схожий синтаксис у C #): Iterator it = sequence.iterator(); while (it.hasNext()) { System.out.println(it.next()); } Що має сенс. Ось еквівалентний синтаксис у Python: it = iter(sequence) while True: try: value = it.next() except StopIteration: break print(value) Я вважав, що Винятки повинні використовуватися лише у, виняткових …

4
Чому метод не повинен викидати кілька типів перевірених винятків?
Ми використовуємо SonarQube для аналізу нашого Java-коду, і воно має це правило (встановлене на критичне): Публічні методи повинні містити не більше одного перевіреного винятку Використання перевірених винятків змушує абонентів методу вирішувати помилки, або шляхом їх поширення, або шляхом їх обробки. Це робить ці винятки повністю частиною API методу. Щоб зберегти …

8
Навіщо проектувати сучасну мову без механізму обробки винятків?
Багато сучасних мов надають багато функцій обробки винятків , але мова програмування Swift Apple не забезпечує механізм обробки винятків . Як і я, керуючись винятками, у мене виникають проблеми з обгортанням того, що це означає. Свіфт має твердження і, звичайно, повертає значення; але у мене виникають труднощі уявити, як мій …

5
чи слід кидати виняток з конструктора?
Я знаю, що можу викинути виключення з конструктора в PHP, але чи варто це робити? Наприклад, якщо значення параметра не таке, як я очікував. Або я повинен відкладати викидання виключення, поки метод не буде викликаний. Які переваги та недоліки в обох випадках?

14
Чому помилки в мовах програмування названі як "Виняток", а не як "Помилка"?
Я фактично про це думав насправді. Я сам не є носієм англійської мови, але все-таки маю багаторічний досвід програмування, і мене це завжди просили. Чому він названий як Виняток, але не Помилка, оскільки вони є помилками. Це могло бути PageNotFoundErrorзамість PageNotFoundException.

8
Чи є законні причини повернення об’єктів виключення замість того, щоб їх кидати?
Це питання поширюється на будь-яку мову програмування ОО, яка підтримує обробку виключень; Я використовую C # лише для ілюстративних цілей. Виключення, як правило, призначені для збільшення, коли виникає проблема, що код не може негайно обробити, а потім потрапити в catchпункт в іншому місці (зазвичай це зовнішній кадр стека). Питання: Чи …

4
Поширення винятків: Коли я можу ловити винятки?
MethodA викликає MethodB, який, в свою чергу, викликає MethodC. У методіB або MethodC немає обробляння винятків. Але в MethodA є обробка винятків. У MethodC відбувається виняток. Тепер цей виняток перекидається до MethodA, який обробляє його належним чином. Що з цим не так? На мою думку, в якийсь момент абонент виконує …

11
Чи є змінні помилки антидіаграмою чи хорошим дизайном?
Щоб обробити кілька можливих помилок, які не повинні зупиняти виконання, у мене є errorзмінна, яку клієнти можуть перевіряти та використовувати для викидання винятків. Це анти-шаблон? Чи є кращий спосіб впоратися з цим? Для прикладу цього в дії ви можете побачити API mysqli PHP . Припустимо, що з проблемами видимості (доступними, …

4
Прощення Python проти дозволу та друку качок
У Python я часто чую, що краще "просити прощення" (вилучення винятків), а не "запитувати дозвіл" (перевірка типу / умови). Що стосується примусового набору качок в Python, це так try: x = foo.bar except AttributeError: pass else: do(x) краще чи гірше, ніж if hasattr(foo, "bar"): do(foo.bar) else: pass з точки зору …

8
Чи варто кидати виняток у випадку значущого значення поза діапазону або самостійно впоратися з ним?
Я написав структуру, яка представляє координати широти / довготи. Їх значення коливаються від -180 до 180 для довготи і 90 до -90 для широт. Якщо користувач цієї структури дає мені значення поза цим діапазоном, у мене є 2 варіанти: Викиньте виняток (аргумент поза діапазоном) Перетворити значення в обмеження Оскільки координата …

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.