package Ġcom . g data . kotlin sync . rest api . sync 2 Ċ Ċ import Ġkotlin . reflect . K Class Ċ Ċ /** Ċ Ġ* ĠKotlin Ġsync # 2 Ċ Ġ* Ċ Ġ* Ġmult ic atch Ġexamples Ċ Ġ*/ Ċ Ċ fun Ġmain () Ġ{ ĊĠĠĠ Ġval Ġunit Action Ġ= Ġ{ Ġprintln (" do Ġsome Ġwork ") Ġ} ĊĠĠĠ Ġval Ġstring Action Ġ= Ġ{ Ġ" do Ġsome Ġwork ". also (:: println ) Ġ} ĊĊĠĠĠ Ġvar Ġvalue : ĠString Ġ= Ġ"" ĊĠĠĠ Ġvar Ġunit : ĠUnit ĊĊĠĠĠ Ġunit Ġ= Ġcatch Block ( unit Action ) ĊĠĠĠ Ġvalue Ġ= Ġcatch Block ( string Action ) ĊĊĠĠĠ Ġunit Ġ= Ġrun Catch ing ( unit Action ) ĊĠĠĠ Ġvalue Ġ= Ġrun Catch ing ( string Action ) ĊĊĠĠĠ Ġunit Ġ= Ġcatch Function ( unit Action ) ĊĠĠĠ Ġvalue Ġ= Ġcatch Function ( string Action ) Ċ } Ċ Ċ fun Ġ< R > Ġcatch Block ( action : Ġ() Ġ-> ĠR ): ĠR Ġ{ ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġaction () ĊĠĠĠ Ġ} Ġcatch Ġ( ex : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( ex ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠIllegal AccessException , Ġis ĠIndex OutOfBoundsException Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġhandle ĠIllegal AccessException Ġor ĠIndex OutOfBoundsException ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠRuntimeException (" handled ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow Ġex ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* Ġ[ kotlin . run Catch ing ] Ġ+ Ġ[ Result ] Ċ Ġ*/ Ċ fun Ġ< R > Ġrun Catch ing ( action : Ġ() Ġ-> ĠR ): ĠR Ġ{ ĊĠĠĠ Ġreturn Ġkotlin . run Catch ing ( action ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. on Failure Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠIllegal AccessException , Ġis ĠIndex OutOfBoundsException Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġhandle ĠIllegal AccessException Ġor ĠIndex OutOfBoundsException ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠRuntimeException (" handled ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. get OrThrow () Ċ } ĊĊ Ċ /** Ċ Ġ* ĠCustom Ċ Ġ*/ Ċ fun Ġ< R > Ġcatch Function ( action : Ġ() Ġ-> ĠR ) Ġ= ĊĠĠĠĠĠĠĠ Ġ{ Ġaction () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. catch ( Illegal AccessException :: class , ĠIndex OutOfBoundsException :: class ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġhandle ĠIllegal AccessException Ġor ĠIndex OutOfBoundsException ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠRuntimeException (" handled ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ Ċ fun Ġ< R > Ġ(() Ġ-> ĠR ). catch ( var arg Ġexceptions : ĠK Class < out ĠThrowable >, Ġcatch Block : Ġ( Throwable ) Ġ-> ĠR ) Ġ= ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( e :: class Ġin Ġexceptions ) Ġcatch Block ( e ) Ġelse Ġthrow Ġe ĊĠĠĠĠĠĠĠ Ġ}