Used to enforce that certain functions can only be called with the "result" block.
If the predicate evaluates to true, then throw the exception form the body. This should usually be called in a "catching" block.
If the predicate is null, then throw the exception form the body. This should usually be called in a "result" block.
Type safe way of throwing an exception.
Defines a block of code that is always called after result block has finished. The block is always executed even on failures caused by undefined Throwables or Exceptions.