StudyCode
exceptions

Исключения

Обработка ошибок через try/catch/finally

Войди, чтобы отслеживать прогресс
Показать языки:
JSJavaScript
try {
  const result = JSON.parse("invalid json");
  throw new Error("Своя ошибка");
} catch (error) {
  console.error("Ошибка:", error.message);
} finally {
  console.log("Выполняется всегда");
}

// Кастомное исключение
class ValidationError extends Error {
  constructor(message) {
    super(message);
    this.name = "ValidationError";
  }
}
PYPython
try:
    result = int("не число")
    raise ValueError("Своя ошибка")
except ValueError as e:
    print(f"Ошибка значения: {e}")
except Exception as e:
    print(f"Общая ошибка: {e}")
finally:
    print("Выполняется всегда")

# Кастомное исключение
class ValidationError(Exception):
    pass
C#C#
try
{
    int result = int.Parse("не число");
    throw new Exception("Своя ошибка");
}
catch (FormatException ex)
{
    Console.WriteLine($"Ошибка формата: {ex.Message}");
}
catch (Exception ex)
{
    Console.WriteLine($"Общая ошибка: {ex.Message}");
}
finally
{
    Console.WriteLine("Выполняется всегда");
}
C++C++
#include <stdexcept>

try {
    throw std::runtime_error("Своя ошибка");
    throw std::invalid_argument("Неверный аргумент");
}
catch (const std::invalid_argument& e) {
    cout << "Неверный аргумент: " << e.what();
}
catch (const std::exception& e) {
    cout << "Ошибка: " << e.what();
}
// C++ не имеет finally — используют RAII
Пояснение

Python позволяет ловить несколько типов исключений в одном except. C++ не имеет finally — вместо него используется паттерн RAII (деструкторы вызываются автоматически).