错误处理
所有 ABBYY FineReader Engine 接口方法和属性都会返回 HRESULT 类型的值。HRESULT("结果句柄")是返回成功、警告和错误值的一种方式。 HRESULT 实际上并非句柄;它们只是 32 位的值,值中有多个字段编码。零结果表示成功,非零结果表示失败。
如果某个方法或属性调用不成功,该方法或属性将返回一个表示失败的 HRESULT 代码。此外,它会通过 IErrorInfo 接口提供一个更详细的错误描述。请参阅有关 COM 的文档以了解错误处理的详细描述。最通用的提示如下:
- C#。为 COM 接口自动生成的包装可以检测错误并将其转换为标准异常。可包含一系列 ABBYY FineReader Engine 方法的语句为:
try { ... } catch( Exception e ) { ... }
- 含 Native COM 支持的 C++。Native COM 支持技术可将接口功能的 HRESULT 代码转换为特殊类型的异常(_com_error) 并自动使用来自 IErrorInfo 的信息。因此,一系列的 FineReader Engine 方法可用以下语句表示:
try { ... } catch (_com_error& e) { ... }
一般来说,可以使用可引发异常功能,通过 C++ 代码标准方式执行有 Native COM 支持的错误处理。
- Raw C++。FineReader Engine 接口方法和属性不能引发异常,但是会返回 HRESULT。对于处理这些返回代码来说最重要的方法是 SUCCEEDED 和 FAILED 宏指令。它们会测试 HRESULT 值,然后从中推断操作结果,即成功还是失败。如要获取 IErrorInfo 对象接口的指针,请使用 GetErrorInfo API 功能。
- Visual Basic。Visual Basic 用户可以通过 Err 对象的 Number 属性访问 HRESULT 代码。Err 对象的其它属性可用 IErrorInfo 的信息进行初始化。此处的错误处理可用 On Error 语句执行。如果在代码的任何地方都没有使用 On Error Resume Next 语句,发生的任何运行时间错误可造成显示来自 IErrorInfo 的错误消息,并停止代码执行。
- Java。请参见 在 Java 中使用 ABBYY FineReader Engine 了解在 Java 中的错误处理建议。
另请参阅
17.09.2024 15:14:41