错误处理
内置函数和结构体
V语言内置了以下内置错误函数和结构体,用来进行错误处理:
//内置错误接口
pub interface IError {
msg() string //返回错误消息
code() int //返回错误码
}
//内置的消息错误类型
pub struct Error {}
pub fn (err Error) msg() string {
return ''
}
pub fn (err Error) code() int {
return 0
}
//内置函数,创建一个错误,错误的类型为内置的MessageError
pub fn error(msg string) IError //抛出带消息的错误
pub fn error_with_code(msg string,code int) IError //带错误消息和错误码错误定义
定义函数时:
返回类型前加感叹号!表示:函数可能返回正常的类型或返回错误,即 T | IError,
返回类型前加问号?表示:函数可能返回正常的类型或返回空值,即 T | none,
其实对应的类型是内置的Option类型
然后在函数代码中根据逻辑,返回空值或错误:
示例代码:
错误处理
函数调用时,使用or代码块来处理错误,默认会传递err参数给or代码块,包含错误信息。
err.msg()返回错误信息,err.code()返回错误码。
or代码块必须以:return/panic/exit/continue/break结尾。
也可以通过match语句来匹配不同的错误,进行错误处理:
if guard守护条件处理错误:
for循环结合or代码块使用:
若函数无返回值,仍需抛出空值或错误,要使用?或!。
返回错误码:
向上抛转错误
调用函数时,可以在调用时不处理,而是向调用链的上级函数抛转错误,如果向上抛转到main主函数还没有处理错误,那么就会以panic的方式报错。
向上抛转时,上级函数的返回值必须也是对应的错误或空值,否则编译时会报错。
自定义错误类型
最后更新于
这有帮助吗?