package Ġio . gitlab . art urb os ch . de te kt . rules . exceptions Ċ Ċ import Ġio . gitlab . art urb os ch . de te kt . api . Code S mell Ċ import Ġio . gitlab . art urb os ch . de te kt . api . Config Ċ import Ġio . gitlab . art urb os ch . de te kt . api . De bt Ċ import Ġio . gitlab . art urb os ch . de te kt . api . Entity Ċ import Ġio . gitlab . art urb os ch . de te kt . api . Issue Ċ import Ġio . gitlab . art urb os ch . de te kt . api . Rule Ċ import Ġio . gitlab . art urb os ch . de te kt . api . Severity Ċ import Ġio . gitlab . art urb os ch . de te kt . api . internal . Active ByDefault Ċ import Ġorg . jetbrains . kotlin . psi . Kt Catch Clause Ċ import Ġorg . jetbrains . kotlin . psi . Kt Throw Expression Ċ import Ġorg . jetbrains . kotlin . psi . Kt Try Expression Ċ import Ġorg . jetbrains . kotlin . psi . psi Util . getChildren OfType Ċ Ċ /** Ċ Ġ* ĠThis Ġrule Ġreports Ġall Ġexceptions Ġthat Ġare Ġcaught Ġand Ġthen Ġlater Ġre - throw n Ġwithout Ġmodification . Ċ Ġ* ĠIt Ġignores Ġcases : Ċ Ġ* Ġ 1 . ĠWhen Ġcaught Ġexceptions Ġthat Ġare Ġre throw n Ġif Ġthere Ġis Ġwork Ġdone Ġbefore Ġthat . Ċ Ġ* Ġ 2 . ĠWhen Ġthere Ġare Ġmore Ġthan Ġone Ġcatch Ġin Ġtry Ġblock Ġand Ġat Ġleast Ġone Ġof Ġthem Ġhas Ġsome Ġwork . Ċ Ġ* Ċ Ġ* Ġ< non comp liant > Ċ Ġ* Ġfun Ġfoo () Ġ{ Ċ Ġ* ĠĠĠĠ Ġtry Ġ{ Ċ Ġ* ĠĠĠĠĠĠĠĠ Ġ// Ġ... Ċ Ġ* ĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ Ċ Ġ* ĠĠĠĠĠĠĠĠ Ġthrow Ġe Ċ Ġ* ĠĠĠĠ Ġ} Ċ Ġ* Ġ} Ċ Ġ* Ġ</ non comp liant > Ċ Ġ* Ċ Ġ* Ġ< comp liant > Ċ Ġ* Ġfun Ġfoo () Ġ{ Ċ Ġ* ĠĠĠĠ Ġtry Ġ{ Ċ Ġ* ĠĠĠĠĠĠĠĠ Ġ// Ġ... Ċ Ġ* ĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ Ċ Ġ* ĠĠĠĠĠĠĠĠ Ġthrow ĠMy Exception ( e ) Ċ Ġ* ĠĠĠĠ Ġ} Ċ Ġ* ĠĠĠĠ Ġtry Ġ{ Ċ Ġ* ĠĠĠĠĠĠĠĠ Ġ// Ġ... Ċ Ġ* ĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ Ċ Ġ* ĠĠĠĠĠĠĠĠ Ġprint ( e ) Ċ Ġ* ĠĠĠĠĠĠĠĠ Ġthrow Ġe Ċ Ġ* ĠĠĠĠ Ġ} Ċ Ġ* ĠĠĠĠ Ġtry Ġ{ Ċ Ġ* ĠĠĠĠĠĠĠĠ Ġ// Ġ... Ċ Ġ* ĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ Ċ Ġ* ĠĠĠĠĠĠĠĠ Ġprint ( e . message ) Ċ Ġ* ĠĠĠĠĠĠĠĠ Ġthrow Ġe Ċ Ġ* ĠĠĠĠ Ġ} Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġtry Ġ{ Ċ Ġ* ĠĠĠĠĠĠĠĠ Ġ// Ġ... Ċ Ġ* ĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ Ċ Ġ* ĠĠĠĠĠĠĠĠ Ġthrow Ġe Ċ Ġ* ĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ Ċ Ġ* ĠĠĠĠĠĠĠĠ Ġprint ( e . message ) Ċ Ġ* ĠĠĠĠ Ġ} Ċ Ġ* Ġ} Ċ Ġ* Ġ</ comp liant > Ċ Ġ*/ Ċ @ Active ByDefault ( since Ġ= Ġ" 1 . 1 6 . 0 ") Ċ class ĠRe throw Ca ught Exception ( config : ĠConfig Ġ= ĠConfig . empty ) Ġ: ĠRule ( config ) Ġ{ ĊĊĠĠĠ Ġoverride Ġval Ġissue Ġ= ĠIssue ( ĊĠĠĠĠĠĠĠ Ġ" Re throw Ca ught Exception ", ĊĠĠĠĠĠĠĠ ĠSeverity . Code S mell , ĊĠĠĠĠĠĠĠ Ġ" Do Ġnot Ġre throw Ġa Ġcaught Ġexception Ġof Ġthe Ġsame Ġtype .", ĊĠĠĠĠĠĠĠ ĠDeb t . FI VE _ MIN S ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Try Expression ( try Expr : ĠK t Try Expression ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcatch Clause s Ġ= Ġtry Expr . getChildren OfType < Kt Catch Clause >() ĊĠĠĠĠĠĠĠ Ġcatch Clause s . map Ġ{ Ġviol ating Throw Expression From ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. take Last While Ġ{ Ġit Ġ!= Ġnull Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach Ġ{ Ġviolation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġviolation ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreport ( Code S mell ( issue , ĠEntity . from ( it ), Ġissue . description )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsuper . visit Try Expression ( try Expr ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġviol ating Throw Expression From ( catch Clause : ĠK t Catch Clause ): ĠK t Throw Expression ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexception Name Ġ= Ġcatch Clause . catch Parameter ?. name ĊĠĠĠĠĠĠĠ Ġval Ġthrow Expression Ġ= Ġcatch Clause . catch Body ?. children ?. first OrNull () Ġas ? ĠK t Throw Expression ĊĠĠĠĠĠĠĠ Ġif Ġ( throw Expression ?. throw n Expression ?. text Ġ== Ġexception Name ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthrow Expression ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} Ċ } Ċ