我有以下代码:
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; }
解决方法
只需访问:
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; }