package Ġcom . github . pro log db . runtime Ċ Ċ import Ġcom . github . pro log db . runtime . module . Module Ċ import Ġcom . github . pro log db . runtime . term . Compound Term Ċ Ċ /** Ċ Ġ* ĠAn Ġexception Ġrelated Ġto , Ġbut Ġnot Ġlimited Ġto , Ġparsing Ġand Ġinterpre ting Ġpro log Ġprograms . Ċ Ġ*/ Ċ open Ġclass ĠPro log Exception ( message : ĠString , Ġoverride Ġval Ġcause : ĠThrowable ? Ġ= Ġnull ) Ġ: ĠRuntimeException ( message ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġ_ pro log StackTrace Ġ= Ġmutable ListOf < Pro log StackTrace Element >() ĊĊĠĠĠ Ġfun Ġadd Pro log Stack Frame ( frame Info : ĠPro log StackTrace Element ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ pro log StackTrace . add ( frame Info ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġpro log StackTrace : ĠList < Pro log StackTrace Element > Ġ= Ġ_ pro log StackTrace Ċ } Ċ Ċ /** Ċ Ġ* ĠThrow n Ġwhen Ġerrors Ġor Ġwarnings Ġoccur Ġduring Ġthe Ġinterpretation Ġof Ġa Ġpro log Ġprogram . Ċ Ġ*/ Ċ open Ġclass ĠPro log RuntimeException ( message : ĠString , Ġcause : ĠThrowable ? Ġ= Ġnull ) Ġ: ĠPro log Exception ( message , Ġcause ) Ċ Ċ open Ġclass ĠPredicate Not Dynamic Exception ( private Ġval Ġindicator : ĠClause Indicator , Ġmessage : ĠString , Ġcause : ĠThrowable ? Ġ= Ġnull ) Ġ: ĠPro log RuntimeException ( message , Ġcause ) Ġ{ ĊĠĠĠ Ġconstructor ( indicator : ĠClause Indicator ) Ġ: Ġthis ( ĊĠĠĠĠĠĠĠ Ġindicator , ĊĠĠĠĠĠĠĠ Ġ" Predicate Ġ$ indicator Ġis Ġnot Ġdynamic " ĊĠĠĠ Ġ) Ċ } Ċ Ċ class ĠPro log Permission Error ( message : ĠString , Ġcause : ĠThrowable ? Ġ= Ġnull ) Ġ: ĠPro log RuntimeException ( message , Ġcause ) Ċ Ċ data Ġclass ĠPro log StackTrace Element Ġ@ Jvm Over loads Ġconstructor ( ĊĠĠĠ Ġval Ġgoal : ĠCompound Term , ĊĠĠĠ Ġval Ġsource Information : ĠPro log Source Information , ĊĠĠĠ Ġval Ġmodule : ĠModule ? Ġ= Ġnull , ĊĠĠĠ Ġval ĠtoString Override : ĠString ? Ġ= Ġnull Ċ ){ ĊĠĠĠ Ġoverride Ġfun ĠtoString () Ġ= ĠtoString Override Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmodule Prefix Ġ= Ġif Ġ( module Ġ== Ġnull ) Ġ"" Ġelse Ġ" module Ġ${ module . name }, Ġ" ĊĠĠĠĠĠĠĠ Ġ"$ goal ĠĠ Ġ$ module Prefix ${ source Information . source FileName }:${ source Information . source File Line }" ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠRuns Ġthe Ġcode ; Ġif Ġit Ġthrows Ġa Ġ[ Pro log Exception ], Ġam ends Ġthe Ġ[ Pro log Exception . stack Trace ] Ġwith Ċ Ġ* Ġthe Ġgiven Ġ[ Pro log StackTrace Element ]. Ċ Ġ*/ Ċ inline Ġfun Ġ< T > Ġpro log Try ( cross inline ĠonError StackTrace Element : Ġ() Ġ-> ĠPro log StackTrace Element , Ġcode : Ġ() Ġ-> ĠT ): ĠT Ġ{ ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcode () ĊĠĠĠ Ġ} ĊĠĠĠ Ġcatch Ġ( ex : ĠPro log Exception ) Ġ{ ĊĠĠĠĠĠĠĠ Ġex . add Pro log Stack Frame ( onError StackTrace Element ()) ĊĠĠĠĠĠĠĠ Ġthrow Ġex ĊĠĠĠ Ġ} Ċ }