30 lines
743 B
GDScript3
Raw Permalink Normal View History

2025-01-11 00:25:52 +01:00
class_name TryCatch
var _risky_code : Callable
var _caught_types : Dictionary
var caught_types : Dictionary:
get: return self._caught_types.duplicate()
var risky_code : Callable:
get: return self._risky_code
func _init(fun : Callable = GDRx.basic.noop):
self._risky_code = fun
self._caught_types = {}
func end_try_catch() -> bool:
return ErrorHandler.singleton().run(self)
func catch(type : String, fun : Callable = GDRx.basic.noop) -> TryCatch:
if self._caught_types.has(type):
return
self._caught_types[type] = fun
return self
func catch_all(types : Array[String], fun : Callable = GDRx.basic.noop) -> TryCatch:
for type in types:
if self._caught_types.has(type):
continue
self._caught_types[type] = fun
return self