#java #jni #ffi

macro catch_panic_macros

The proc macro impl for catch_panic

1 stable release

1.0.0 Jul 25, 2022

#81 in #jni

Download history 4/week @ 2024-07-27 40/week @ 2024-08-03 91/week @ 2024-08-10 21/week @ 2024-08-17 30/week @ 2024-08-24 56/week @ 2024-08-31 45/week @ 2024-09-07 8/week @ 2024-09-14 72/week @ 2024-09-21 36/week @ 2024-09-28 31/week @ 2024-10-05 44/week @ 2024-10-12 34/week @ 2024-10-19 13/week @ 2024-10-26 57/week @ 2024-11-02 8/week @ 2024-11-09

117 downloads per month
Used in catch_panic

MIT/Apache

6KB
95 lines

⚾ #[catch_panic]

Crates.io Documentation License

A helper macro for safe Java-Rust interop that "catches" Rust panics and rethrows them as Java exceptions.

Getting Started

Add catch_panic as a dependency to your Cargo.toml:

[dependencies]
catch_panic = "1.0.0"

Usage

Attach #[catch_panic] to a JNI callback to have panics converted into RuntimeExceptions:

use jni::JNIEnv;
use catch_panic::catch_panic;

#[no_mangle]
#[catch_panic]
pub extern "C" fn Java_com_example_Example_panic(_env: JNIEnv) {
    panic!("everything is not fine");
}

See the docs for macro options and more information.

License

This crate is dual-licensed under either:

at your option.

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

The code in this crate is a derivative of code from HermitSocialClub/HermitRepo, specifically the files ProjectTomato/tomato_macros/src/lib.rs and ProjectTomato/tomato/src/util.rs. All authors of these two files have agreed to relicense the original code under the above license.

Dependencies

~1.5MB
~37K SLoC