错误类型

最近更新时间:2018-08-28 15:44:16

函数在调试和运行过程中如果出现异常,腾讯云 SCF 平台会尽最大可能捕获异常并将异常信息写入日志中。函数运行产生的异常包括捕获的异常(Handled error)和未捕获的异常(Unhandled Error)。例如,用户可以在代码中显式地抛出异常:

def always_failed_handler(event,context):
    raise Exception('I failed!')

此函数在运行过程中将引发异常,返回下面的错误信息:

File "/var/user/index.py", line 2, in always_failed_handler
raise Exception('I failed!')
Exception: I failed!

SCF 平台会将此错误信息记录到函数日志中。

如果您需要测试此代码,请新建函数并复制上面的函数代码,不添加任何触发器。单击控制台【测试】按钮,选择“Hello World”测试示例进行测试。

您可以在代码中自行定义如何处理可能出现的错误,保障应用程序的健壮性和可扩展型。例如:继承Exception类

class UserNameAlreadyExistsException(Exception): pass

def create_user(event):
    raise UserNameAlreadyExistsException('The username already exists,please change a name!')

或者使用 Try 语句捕获错误:

def create_user(event):
    try:
        createUser(event[username],event[pwd])
    except UserNameAlreadyExistsException,e:
        //catch error and do something

当用户的代码逻辑中未进行错误捕获时,SCF 会尽可能捕获错误。但遇到平台也无法捕捉的错误时,例如用户函数在运行过程中突然崩溃退出,系统将会返回一个通用的错误消息。

下表展示了代码运行中常见的一些错误

错误场景 返回消息
使用 raise 抛出异常 {File "/var/user/index.py", line 2, in always_failed_handler raise Exception('xxx') Exception: xxx}
处理方法不存在 {'module' object has no attribute 'xxx'}
依赖模块并不存在 {global name 'xxx' is not defined}
超时 {"time out”}