[异常处理]:异常处理案例1

python 和 golang 中的 异常处理案例1。

> 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类型的错误,就会执行except中的语句
    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) 语句,程序出现异常时,将会打印异常信息,并在此处终止程序
                                             // 在这个代码块中,我们还可以使用诸如num = 9999之类的语句,在异常时给num一个标记值
	}

	fmt.Println("得分为:", num)          // 本例中出现转换异常时,num被赋值为空,即0

}



/* [正确运行如下]:########################
请输入数字:99
得分为: 99
####################################### */


/* [异常运行如下]:########################
请输入数字:ok
转换错误  
得分为: 0
####################################### */

--- to be continue ---

posted @ 2021-12-23 20:28  渝北小站  阅读(120)  评论(0)    收藏  举报