# Macro error_chain::bail [−] [src]

    macro_rules! bail {
        ($e:expr) => { ... };
        ($fmt:expr, $($arg:tt)+) => { ... };
    }

Exits a function early with an error

The `bail!` macro provides an easy way to exit a function. `bail!(expr)` is equivalent to writing.

        return Err(expr.into());

And as shorthand it takes a formatting string a la `println!`:

    bail!("bad number: {}", n);

# Examples

Bailing on a custom error:

    error_chain! {
        errors { FooError }
    }

    fn foo() -> Result<()> {
        if bad_condition() {
            bail!(ErrorKind::FooError);
        }

        Ok(())
    }

Bailing on a formatted string:

    error_chain! { }

    fn foo() -> Result<()> {
        if let Some(bad_num) = bad_condition() {
            bail!("so bad: {}", bad_num);
        }

        Ok(())
    }

# Help

## Keyboard Shortcuts

?
  Show this help dialog
S
  Focus the search field
⇤
  Move up in search results
⇥
  Move down in search results
⏎
  Go to active search result
+
  Collapse/expand all sections

## Search Tricks

Prefix searches with a type followed by a colon (e.g. `fn:`) to restrict the search to a given type.

Accepted types are: `fn`, `mod`, `struct`, `enum`, `trait`, `type`, `macro`, and `const`.

Search functions by type signature (e.g. `vec -> usize` or `* -> vec`)