Picat Exception Handling and Debugging Flashcards
6 cards from real Picat practice questions. Tap to flip, then mark Knew It or Still Learning โ missed cards come back until you master them.
Read the first 6 Picat Exception Handling and Debugging flashcards as text
What is the purpose of `setup_call_cleanup(Setup, Goal, Cleanup)` in Picat?
Answer: Guarantees Cleanup runs whether Goal succeeds, fails, or throws
`setup_call_cleanup/3` ensures Cleanup executes deterministically regardless of how Goal terminates.
What situation does `existence_error(procedure, F/A)` represent in Picat?
Answer: A predicate F/A that is not defined
`existence_error(procedure, F/A)` is thrown when the predicate F with arity A is not defined in the program.
How do you re-throw a caught exception from inside a handler in Picat?
Answer: throw(Error)
You re-throw a caught exception using the same `throw(Error)` predicate inside the catch handler.
What does the second argument in `error(ErrorTerm, Context)` provide in Picat?
Answer: Context information about where the error occurred
The Context argument in `error/2` supplies supplementary information such as the predicate indicator where the error was detected.
Which of the following is a valid way to create a user-defined exception in Picat?
Answer: Both throw(user_error(Message)) and throw(error(my_error(Details), context)) are valid
Any Picat term can be thrown as an exception; both a plain term and the standard `error/2` wrapper are valid.
What does `nospy(Predicate)` do in Picat's debugger?
Answer: Removes the spy point from the specified predicate
`nospy(Predicate)` removes a previously set spy point from the named predicate.