# Ops What is Ops? It's just a joke with "try { bla bla bla } catch (NullPointerException e) { bla bla bla bla }". But i use ops, It's created only for pratice [declarative Rust macros](https://doc.rust-lang.org/reference/macros.html). But it's functional macro. Usage: ```rust use std::fmt::Display; use ops::catch; fn main() { catch!{() => try { error()?; Ok(()) } ops e: NullPointerException { //do something println!("{}", e) } } } #[derive(Debug)] struct NullPointerException { message: String, } impl NullPointerException { fn new(message: &str) -> Self { Self { message: message.into() } } } impl Display for NullPointerException { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { write!(f, "NullPointerException: {}", self.message) } } impl std::error::Error for NullPointerException {} //some stuff fn error() -> Result<(), Box> { Err(Box::new(NullPointerException::new("get out of here"))) } ``` The macro expand to: ```rust ```