8个版本

使用旧Rust 2015

0.3.2 2018年9月1日
0.3.1 2018年7月28日
0.3.0 2018年6月17日
0.2.4 2018年5月8日
0.2.3 2018年4月24日

#47 in #exception

28 每月下载量
shippai 中使用

MIT 许可证

4KB
58 代码行

Shippai

其他语言的失败处理

Travis PyPI Crates.io

Shippai是一组库,帮助您处理来自其他语言的Fail风格的错误。

目前该项目包括

  • 一个Rust库,用于为您的Fail类型生成FFI代码。

  • 一个Python库,用于

    1. 从FFI提供的信息生成异常类型
    2. 将传递给该界面的错误转换为相应的异常,并带上完整的堆栈跟踪一起抛出

示例

查看Python示例,了解所有这些是如何协同工作的。以下是堆栈跟踪的示例

$ make install-dev
$ RUST_BACKTRACE=1 python
Python 3.6.5 (default, May 11 2018, 04:00:52)
[GCC 8.1.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import shippai_example
>>> shippai_example.authenticate('', '')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/untitaker/projects/shippai/examples/python/shippai_example/__init__.py", line 25, in authenticate
    errors.check_exception(err[0])
  File "/home/untitaker/projects/shippai/python/shippai/__init__.py", line 144, in check_exception
    _raise_with_more_frames(exc, frames)
  File "/home/untitaker/projects/shippai/python/shippai/__init__.py", line 262, in _raise_with_more_frames
    _append_frame(exc_info, frames[-1])
  File "/home/untitaker/projects/shippai/python/shippai/__init__.py", line 296, in _append_frame
    exec(code, ns)
  File "/home/untitaker/projects/shippai/examples/python/rust/src/lib.rs", line 43, in authenticate
    let res = authenticate_impl(
  File "/home/untitaker/projects/shippai/examples/python/rust/src/lib.rs", line 27, in shippai_example::authenticate_impl::he2a2e071e069a869
    return Err(MyError::UserWrong.into());
  File "/checkout/src/libcore/convert.rs", line 396, in <T as core::convert::Into<U>>::into::hda623f1239c06654
shippai.UserWrong: Invalid username
>>> 

注意事项

Shippai仍在开发中,许多功能尚未实现。(查看问题跟踪器)

我对我在做什么也没有头绪。如果您在这里看到有趣的代码(尤其是在FFI部分),请不要假设它是出于某种良好的原因。告诉我我哪里错了。

许可证

Shippai采用MIT许可证,请参阅LICENSE

依赖关系

~2MB
~48K SLoC