#68 Обробка помилок (частина перша)

แชร์
ฝัง
  • เผยแพร่เมื่อ 23 ธ.ค. 2024

ความคิดเห็น • 22

  • @Саша-т9б5с
    @Саша-т9б5с หลายเดือนก่อน

    Дякую за роз'яснення. Підкажіть - оця конструкція ( try + catch) - використовується, щоб коректно опрацьовувати помилки?
    Бо в принципі варіант з if - цілком ефективно справляється з даним завданням.
    Для чого ускладнення?

    • @pathtocpp
      @pathtocpp  หลายเดือนก่อน

      Це в першу чергу це для того щоб зменьшити код якщо ви відловлюєте помилки за допомогою if+else. В коді їх може бути дуже і дуже багато.
      По друге це потрібно щоб вивести потрібний текст помилки і обробити цю помилку.
      Легше підтримувати код.
      Ну і if потрібен якщо ви точно знаєте що може трапитись при виклику функції або методу. try+catch допомагає обробити ті помилки про котрі ви не знаєте зовсім нічого. НАприклад чому не виділилась пам'ять або ще щось. У вас наприклад функція чомусь не справцювала, і ви не знаєте чому. А try+catch можна дізнатись чому і відштовхуючись від цього писати далі свій код

    • @Саша-т9б5с
      @Саша-т9б5с หลายเดือนก่อน

      ОК 🎉 Дякую за роз'яснення

  • @kostiantyn.hermash
    @kostiantyn.hermash หลายเดือนก่อน

    Порівнювати дійсні числа накшталт: double b; if(b == 0) --- це погано. Тому що тут може бути щось типу цього: b=0.00000000001; Так можна робити лише з цілими числами. А з дійсними треба так: if( (b-0)

    • @pathtocpp
      @pathtocpp  หลายเดือนก่อน +1

      @@kostiantyn.hermash точно. Дякую що нагадали

    • @pathtocpp
      @pathtocpp  หลายเดือนก่อน

      Вибач. Не знаю як це зробити

    • @pathtocpp
      @pathtocpp  หลายเดือนก่อน

      @artemnovichenko
      Спробуй в себе:
      #include
      int main()
      {
      float f = 2.35f;
      std::cout

    • @pathtocpp
      @pathtocpp  หลายเดือนก่อน

      @@artemnovichenko до чого ви це?

    • @kostiantyn.hermash
      @kostiantyn.hermash หลายเดือนก่อน

      @@artemnovichenko , ну ось вам код на C.
      #include
      #include
      int main()
      {
      double result = 0.0;
      double a = 0.0;
      double b = 0.0;
      double c = 0.0;
      double sinus_alpha = 0.0;
      double cosinus_alpha = 0.0;
      a = M_PI; // Катет 1
      b = 8.42; // Катет 2
      c = sqrt(a*a + b*b); // Гіпотенуза
      sinus_alpha = b/c; // Синус кута альфа
      cosinus_alpha = a/c; // Косинус кута альфа
      result = pow(sinus_alpha, 2.0) + pow(cosinus_alpha, 2.0) - 1.0; // Має бути нуль
      printf("result = %.30f;
      ", result);
      }
      Має бути нуль, чи не так? А ось вам результат роботи програми:
      result = -0.000000000000000111022302462516;
      Моя архітектура --- amd64, ОС --- Debian GNU/Linux.