Just "DIY". Here are some ideas for you:
var array = [1, 2, 3]
_ = array[100, default: 42] // returns 42
array[100, default: 42] = 24 // silently ignored, sadly
_ = array[100, default: .log] // logs out-of-bounds to console, returns nil
array[100, default: .log] = 24 // logs out-of-bounds to console, does nothing else
_ = try! array[100, default: .throw] // throws
// try! array[100, default: .throw] = 24 // sadly impossible in current Swift
Plus consider the "unchecked exceptions" approach, see the draft implementation in the other thread.