微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在C中使用’boost :: system :: error_code’

我有以下代码
boost::system::error_code errcode;
return (boost::filesystem::create_directories(widePath,errcode));

当出现问题时,我认为errcode会指出错误的性质.但是,我发现当我知道有问题出现时,errcode保持0,这是没有帮助的.

我也尝试打印错误代码,看看它是否会显示不同的东西:

boost::system::error_code errcode;
boost::filesystem::create_directories(widePath,errcode);

if (errcode == 0)
    return true;
else
{
    std::cout << errcode;       
    return false;
}

通过在文件名称“widpath”中引入无效字符(???),我故意造成错误.现在我回到系统:123结果.这意味着什么?

解决方法

只需访问: http://www.boost.org/doc/libs/1_55_0/libs/system/doc/reference.html#Header-error_code
enum errc_t {
    success = 0,address_family_not_supported,//EAFNOSUPPORT
    address_in_use,//EADDRINUSE
    address_not_available,//EADDRNOTAVAIL
    already_connected,//EISCONN
    argument_list_too_long,//E2BIG
    argument_out_of_domain,//EDOM
    bad_address,//EFAULT
    bad_file_descriptor,//EBADF
    bad_message,//EBADMSG
    broken_pipe,//EPIPE
    connection_aborted,//ECONNABORTED
    connection_already_in_progress,//EALREADY
    connection_refused,//ECONNREFUSED
    connection_reset,//ECONNRESET
    cross_device_link,//EXDEV
    destination_address_required,//EDESTADDRREQ
    device_or_resource_busy,//EBUSY
    directory_not_empty,//ENOTEMPTY
    executable_format_error,//ENOEXEC
    file_exists,//EEXIST
    file_too_large,//EFBIG
    filename_too_long,//ENAMetoOLONG
    function_not_supported,//ENOSYS
    host_unreachable,//ehostunreach
    identifier_removed,//EIDRM
    illegal_byte_sequence,//EILSEQ
    inappropriate_io_control_operation,//ENottY
    interrupted,//EINTR
    invalid_argument,//EINVAL
    invalid_seek,//ESPIPE
    io_error,//EIO
    is_a_directory,//EISDIR
    message_size,//EMSGSIZE
    network_down,//ENETDOWN
    network_reset,//ENETRESET
    network_unreachable,//ENETUNREACH
    no_buffer_space,//ENOBUFS
    no_child_process,//ECHILD
    no_link,//ENOLINK
    no_lock_available,//ENOLCK
    no_message_available,//ENODATA
    no_message,//ENOMSG
    no_protocol_option,//EnopROTOOPT
    no_space_on_device,//ENOSPC
    no_stream_resources,//ENOSR
    no_such_device_or_address,//ENXIO
    no_such_device,//ENODEV
    no_such_file_or_directory,//ENOENT
    no_such_process,//ESRCH
    not_a_directory,//ENOTDIR
    not_a_socket,//ENOTSOCK
    not_a_stream,//ENOSTR
    not_connected,//ENOTCONN
    not_enough_memory,//ENOMEM
    not_supported,//ENOTSUP
    operation_canceled,//ECANCELED
    operation_in_progress,//EINPROGRESS
    operation_not_permitted,//EPERM
    operation_not_supported,//EOPNOTSUPP
    operation_would_block,//EWOULDBLOCK
    owner_dead,//EOWNERDEAD
    permission_denied,//EACCES
    protocol_error,//EPROTO
    protocol_not_supported,//EPROTONOSUPPORT
    read_only_file_system,//EROFS
    resource_deadlock_would_occur,//EDEADLK
    resource_unavailable_try_again,//EAGAIN
    result_out_of_range,//ERANGE
    state_not_recoverable,//ENOTRECOVERABLE
    stream_timeout,//ETIME
    text_file_busy,//ETXTBSY
    timed_out,//ETIMEDOUT
    too_many_files_open_in_system,//ENFILE
    too_many_files_open,//EMFILE
    too_many_links,//EMLINK
    too_many_synbolic_link_levels,//ELOOP
    value_too_large,//EOVERFLOW
    wrong_protocol_type             //EPROTOTYPE
};

此外:

switch( errcode.value() ) {
    case boost::system::errc::success: {
        // fine
    }
    break;

    case boost::system::errc::operation_canceled: {
        // Timer cancelled
    }
    break;

    default: {
        // Assert unexpected case
    }
    break;
}

原文地址:https://www.jb51.cc/c/114919.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐