В Swift пошли ещё дальше — и сделали возможность вызывать оператор try тремя способами: 1) просто try (с исключением на ошибку) 2) try! (с разворачиванием опционала, по сути force unwrap) 3) try? (как здесь к примеру firstOrNull)
У нас можно так
runCatching { // return T }.onFailure { // Throwable }.onSuccess { // T }
и кучу еще плюшек, типа isFailure, isSuccess, getExceptionOrNull, getResultOrNull к этому runCatching. но пока еще остаются кейсы когда надо писать традиционный трай катч
что намного делает красивее обработку ошибок и еще объект в котлине Result<T>, работать с ошибками в котлине очень удобно