@weintek/libc/errno

当使用 FILE 相关函数时发生错误, 请使用 @weintek/libc/errno 模块来获取错误代码,以确定错误的原因。

注意:

  • @weintek/libc 下的模块(如 errnostdiostringunistd) 受 C 标准库 的设计影响较大。
  • 该模块仅在 JS 元件/动作运行于本地 HMI 时可用。
Properties:
Name Type Description
EACCES Number

权限被拒绝。(13)

EAGAIN Number

资源暂时不可用。请重试。(11)

EBADF Number

文件描述符错误。(9)

EBUSY Number

设备或资源正忙。(16)

EEXIST Number

文件已存在。(17)

EFAULT Number

无效地址。(14)

EINTR Number

无效参数。(4)

EINVAL Number

输入/输出错误。(22)

EIO Number

函数调用被中断。(5)

EISDIR Number

目标是一个目录。(21)

ELOOP Number

符号链接层级过多。(114)

ENAMETOOLONG Number

文件名过长。(38)

ENOENT Number

没有那个文件或目录。(2)

ENOMEM Number

无法分配内存。(12)

ENOSPC Number

设备上没有剩余空间。(28)

ENOSYS Number

功能未实现。(40)

ENOTDIR Number

不是一个目录。(20)

EPERM Number

操作不允许。(1)

EPIPE Number

管道破裂。(32)

EROFS Number

只读文件系统。(30)

ESPIPE Number

非法的 seek 操作。(29)

Examples

获取错误代码并在 EINVAL 错误时进行处理

const cerrno = await import('@weintek/libc/errno');
const cstdio = await import('@weintek/libc/stdio');
const file = cstdio.fopen('USB1', '/some/example/file', 'r+');
if (cstdio.fseek(file, -1, cstdio.SEEK_SET) !== 0) {
  const errCode = cerrno.getErrno();
  if (errCode === cerrno.EINVAL) {
    // 处理错误...
  }
}

返回最近发生的错误

const cerrno = await import('@weintek/libc/errno');
const cstdio = await import('@weintek/libc/stdio');
const cstring = await import('@weintek/libc/string');
const disk = 'USB1';
const path = 'test';

try {
    cstdio.fopen(disk, path, "r");
} catch (error) {
    console.log('错误代码:', cerrno.getErrno());
    // 错误代码: 2 (== cerrno.ENOENT)
    console.log('错误信息:', cstring.strerror(cerrno.getErrno()));
    // 错误信息: 没有那个文件或目录
    console.log('捕获到的错误:', error);
    // 捕获到的错误: Error: 没有那个文件或目录 at <anonymous> (<JS Object>:8)
}

Methods

(static) getErrno() → {Number}

Since:
  • EasyBuilder Pro V6.09.01
See:

此方法返回最近发生错误的错误代码。如果没有发生错误,则返回零。

Returns:
Type
Number