---
title: 错误处理
description: "KML_LAPACK会对输入参数进行检查，当出现参数为空指针或数值不合法等错误时会调用LAPACK错误处理函数xerbla_执行错误处理，默认情况下将使用Netlib LAPACK自带的xerbla_实现。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/240RC2/accel/kunpengaccel_kml_16_0217.html
sourcePath: /source/zh/kunpengboostkithistory/240RC2/accel/kunpengaccel_kml_16_0217.html
indexId: f0c25666bf9d5d6e57d93598e7875da25d927582f43a378fe21fb945916a2d6b76
---
# 错误处理

KML_LAPACK会对输入参数进行检查，当出现参数为空指针或数值不合法等错误时会调用LAPACK错误处理函数xerbla_执行错误处理，默认情况下将使用Netlib LAPACK自带的xerbla_实现。

此实现的行为是打印以下错误信息并以错误码0退出进程：

```
** On entry to FUNC parameter number  N had an illegal value
```

其中FUNC为出错的LAPACK函数名称，N为参数序号。

用户可以提供自定义的xerbla_()函数实现，避免在出错时直接退出整个程序，示例实现如下：

```
void xerbla_(const char *func, const int *param, int funcLen)
{
printf("XERBLA: function %.*s, info %i.\n", funcLen, func, *param);
}
```

使用上述示例函数时会在参数错误时打印一行错误信息，但不会退出进程。此时会返回函数的调用者，并将info参数设为相应的错误参数值。

请注意：

1. 当参数中出现多个错误参数时，info可能设为任一错误参数的序号（取反）。
2. 当输入的矩阵维度过大无法正常计算时，info会设为相关维度参数的序号（取反）。
3. 用户程序在链接时需要首先链接包含自定义xerbla_实现的文件，再链接liblapack_adapt.a，否则会出现重复定义符号错误或仍然使用了Netlib LAPACK的xerbla_实现。
4. 若用户提供自定义的xerbla_实现，所有错误处理（包括KML_LAPACK未优化的函数）都会使用此实现。
