>>1
Judy is just a more advanced version of the Standard C Library assert macro.
You should only use assert to ensure program invariants in debug or internal/testing builds, and then conditionally disable them for your final production test and release builds once your software has been thoroughly tested--thus making your final program faster and less bloasted.
Asserts are useful for tracking down programmer mistakes, and the likes.
They shouldn't be used for errors that are expected to occur during regular program execution.
Instead, you should just use return values to propagate expected errors up the call stack until a point where your program can make an actually useful decision on how to rectify the problem, ie. restart a certain process or subsystem, notify the user with a log message or GUI notification, etc.
In some object-oriented languages, exception handling is the preferred mechanism for error propagation.
But in C, you have no such luxuries. Some people try to use
setjmp/longjmp, but that has poor guarantees on stack safety and cleanup, and slower than using asserts in your debug/test builds.