本节介绍 python 和 golang 中的 异常处理。
> python
# 创建一个迭代器
my_list = [1,2]
iter_my_list = iter(my_list)
# 前2次取数,正常拿到数据
try:
print(next(iter_my_list))
print(next(iter_my_list))
except StopIteration:
print("迭代器中的数据已经取完了!")
else: # try - except -else 语句结构正常退出,将执行1次else中的代码
print("1-正常退出")
# 尝试继续取数
try:
print(next(iter_my_list)) # 因为迭代器已经没有数据了,这行代码会导致一个StopIteration类型的错误,并终止try代码块
print("hello") # 该代码不会执行
except StopIteration: # try代码块中出现StopIteration类型的错误,就会执行下列语句
print("迭代器数据已取完!")
else: # try - except -else 语句结构异常退出,不会执行else中的代码
print("2-正常退出")
print("3-执行完毕") # 后续的代码依然会执行
# [运行结果如下]:########################
"""
1
2
1-正常退出
迭代器数据已取完!
3-执行完毕
"""
# #######################################
> golang
package main
import (
"bufio"
"fmt"
"os"
"strconv"
"strings"
)
func main() {
fmt.Print("请输入数字:")
reader := bufio.NewReader(os.Stdin) // 定义一个reader,用于读取缓冲区中的键盘输入
msg, _ := reader.ReadString('\n') // 将换行(\n)设置为终止读取的标志,将读取到的内容返回为string,赋值给msg
// 删除换行
msg = strings.TrimSpace(msg)
// 转换为整数
num, err := strconv.Atoi(msg)
if err != nil {
fmt.Println("转换错误") // 此处若使用 log.Fatal(err) 语句,程序出现异常时,将会打印异常信息,并在此处终止程序
}
fmt.Println("得分为:", num) // 本例中出现转换异常时,num被赋值为0
}
/* [正确运行如下]:########################
请输入数字:99
得分为: 99
####################################### */
/* [异常运行如下]:########################
请输入数字:ok
转换错误
得分为: 0
####################################### */
--- to be continue ---