package Ġjust 4 fun . kot link it Ċ Ċ /** ĠContains Ġ` try - catch Ġlike ` Ġinline Ġmethods Ġwith Ġmore Ġconvenient Ġsyntax Ġ*/ Ċ Ċ object ĠS af ely Ġ{ Ċ ĉ var Ġstack Size Limit Ġ= Ġ 6 ĊĊ ĉ operator Ġinline Ġfun Ġ< T > Ġinvoke ( code : Ġ() Ġ-> ĠT ): ĠT ? Ġ= Ġtry Ġ{ Ċĉ ĉ code () Ċ ĉ } Ġcatch Ġ( e : ĠThrowable ) Ġ{ Ċĉ ĉ val Ġsize Ġ= Ġif Ġ( e . stack Trace . size Ġ> Ġstack Size Limit ) Ġstack Size Limit Ġelse Ġe . stack Trace . size Ċĉ ĉ val Ġstack Ġ= Ġif Ġ( size Ġ> Ġ 0 ) Ġ"\ n " Ġ+ Ġe . stack Trace . take ( size ). join ToString ("\ n ") Ġelse Ġ"" Ċĉ ĉ System . err . println ("$ e $ stack ") Ċĉ ĉ null Ċ ĉ } ĊĉĊ ĉ operator Ġinline Ġfun Ġ< T > Ġinvoke ( code : Ġ() Ġ-> ĠT , Ġcatch : Ġ( Throwable ) Ġ-> ĠT ): ĠT Ġ= Ġtry Ġ{ Ċĉ ĉ code () Ċ ĉ } Ġcatch Ġ( e : ĠThrowable ) Ġ{ Ċĉ ĉ catch ( e ) Ċ ĉ } ĊĉĊ ĉ operator Ġinline Ġfun Ġ< T > Ġinvoke ( code : Ġ() Ġ-> ĠT , Ġcatch : Ġ( Throwable ) Ġ-> ĠT , Ġfinally : Ġ() Ġ-> ĠUnit ): ĠT Ġ= Ġtry Ġ{ Ċĉ ĉ code () Ċ ĉ } Ġcatch Ġ( e : ĠThrowable ) Ġ{ Ċĉ ĉ catch ( e ) Ċ ĉ } Ġfinally Ġ{ Ċĉ ĉ finally () Ċ ĉ } Ċ } Ċ