class OpenSSL::OpenSSLError
OpenSSL 的通用错误类。此库中的所有错误类都继承自此类。
此类表示底层 OpenSSL 库报告了一个错误。
属性
引发异常时捕获的 OpenSSL 错误队列条目。如果将 OpenSSL.debug 设置为 true,则相同的信息会打印到 stderr。
这是一个包含零个或多个字符串的数组,按从旧到新的顺序排列。字符串的格式不稳定,在 OpenSSL 的不同版本或此 Ruby 扩展的不同版本中可能会有所不同。
另请参阅 ERR_get_error(3) 手册页。
Public Instance Methods
Source
static VALUE
osslerror_detailed_message(int argc, VALUE *argv, VALUE self)
{
VALUE str;
#ifdef HAVE_RB_CALL_SUPER_KW
// Ruby >= 3.2
if (RTEST(rb_funcall(rb_eException, rb_intern("method_defined?"), 1,
ID2SYM(rb_intern("detailed_message")))))
str = rb_call_super_kw(argc, argv, RB_PASS_CALLED_KEYWORDS);
else
#endif
str = rb_funcall(self, rb_intern("message"), 0);
VALUE errors = rb_attr_get(self, id_i_errors);
// OpenSSLError was not created by ossl_make_error()
if (!RB_TYPE_P(errors, T_ARRAY))
return str;
str = rb_str_resurrect(str);
rb_str_catf(str, "\nOpenSSL error queue reported %ld errors:",
RARRAY_LEN(errors));
for (long i = 0; i < RARRAY_LEN(errors); i++) {
VALUE err = RARRAY_AREF(errors, i);
rb_str_catf(str, "\n%"PRIsVALUE, err);
}
return str;
}
返回带有捕获的 OpenSSL 错误队列条目的装饰性异常消息。