异常处理

本节介绍 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 ---

上一篇:Detectron2注册自己的COCO数据集


下一篇:Maven坐标