try, except в Python позволяет перехватывать как встроенные исключения (например, TypeError, ValueError), так и пользовательские (определенные разработчиком) исключения.  В блоке except можно указывать конкретный тип исключения, которое нужно перехватить, или использовать except Exception для перехвата всех исключений.
Да, безусловно, конструкцию try...except в Python можно использовать для перехвата как встроенных (стандартных) исключений, предоставляемых самим Python, так и собственных, пользовательских исключений, которые вы определяете в своем коде.
Основной принцип работы такой же: код, который потенциально может вызвать исключение, помещается в блок try.  Если в этом блоке возникает какое-либо исключение, Python ищет соответствующий блок except, который может обработать это исключение. Если подходящий блок except найден, код в нем выполняется. Если нет, исключение продолжает распространяться вверх по стеку вызовов, пока не будет обработано или не приведет к завершению программы.
Пример перехвата встроенного исключения:
try:
  x = 10 / 0  # Это вызовет ZeroDivisionError
except ZeroDivisionError:
  print("Попытка деления на ноль!")
Пример перехвата пользовательского исключения:
class MyCustomError(Exception):
  """Пользовательское исключение."""
  pass
def some_function(value):
  if value < 0:
    raise MyCustomError("Значение не может быть отрицательным")
  return value
try:
  result = some_function(-5)
except MyCustomError as e:
  print(f"Поймано пользовательское исключение: {e}")
else:
  print(f"Результат: {result}")
В примере выше, MyCustomError является классом исключения, который наследуется от базового класса Exception.  Блок except MyCustomError as e: перехватывает это исключение и позволяет получить доступ к сообщению об ошибке через переменную e.
Важно помнить, что блоки except проверяются по порядку. Если первый except соответствует исключению, остальные не проверяются.  Рекомендуется располагать блоки except от более специфичных исключений к более общим (например, except ZeroDivisionError перед except Exception), чтобы избежать случайного перехвата более специфичных исключений общим обработчиком. Также можно использовать несколько блоков except для обработки разных исключений в одном блоке try.
Кроме того, можно использовать блок finally, который будет выполнен в любом случае, независимо от того, было ли выброшено исключение или нет. Обычно используется для очистки ресурсов (например, закрытия файлов).
Наконец, блок else может быть использован после except.  Он выполняется только в том случае, если в блоке try не было выброшено никаких исключений.