В исключениях Java есть как минимум эти четыре конструктора:
Exception()
Exception(String message)
Exception(String message, Throwable cause)
Exception(Throwable cause)
Если вы хотите определить свои собственные расширения, вам просто нужно объявить исключения потомков и реализовать каждый желаемый конструктор, вызывающий супер супер конструктор
Как вы можете достичь того же в scala?
До сих пор я видел эту статью и этот SO ответ, но Я подозреваю, что должен быть более простой способ достичь такой общей вещи.