错误处理

内置函数和结构体

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的方式报错。

向上抛转时,上级函数的返回值必须也是对应的错误或空值,否则编译时会报错。

自定义错误类型

最后更新于

这有帮助吗?