1. 默认情况下,系统检测到错误后会终止程序。
  2. 一个try语句可以对应一个except子句。
  3. 异常处理结构中的finally块中代码仍然有可能出错从而再次引发异常。
  4. 带有else子句的异常处理结构,如果不发生异常则执行else子句中的代码。
  5. 在异常处理结构中,不论是否发生异常,finally子句中的代码总是会执行的。
  6. try-except-finally异常处理结构中,当异常发生时,finally语句内容将会被执行。
  7. 如果except子句没有指明任何异常类型,则表示捕捉所有的异常。
  8. 无论程序是否捕获到异常,一定会执行finally语句。
  9. 所有的except子句一定在else和finally的前面。
  10. 在Python中,带有else子句的异常处理结构,如果不发生异常,则执行else子句中的代码。
  11. 在Python异常处理结构中,不论是否发生异常,finally子句中的代码总是会执行的。
  12. try-except通常用于检查用户输入的合法性、文件打开或网络获取的成功性等
  13. 程序代码中产生异常,不便于处理时,抛出异常

编程题

数据异常处理

输入一组数据,求平均值。要求: 数据正确,正确计算。 数据有错误,能异常处理,输出错误信息,不进行计算。 输入格式: 行1:n代表输入的数据个数 接下来n行表示输入的数据 输出格式: 输入数据合法正确,则输出正确,并输出平均值。 输入数据不正确,如果数值错误,输出数值错误 除0错误,输出除0错误,n不能等0 不管有没有异常,都输出程序结束

try:
    n=int(input())
    sum=0
    for i in range(n):
        a=float(input())
        sum=sum+a
    avg=sum/n
except ValueError:
    print("数值错误")
except ZeroDivisionError:
    print("除0错误,n不能等0")
else:
    print("正确")
    print("avg={:.2f}".format(avg))
finally:
    print("程序结束")

查成绩

从键盘输入一个学生所有课程的成绩,输入格式为”课程名:成绩“,每门课占一行,以空行结束。随后提示”请输入要查询的课程:“,用户从键盘输入课程名,查询并输出该课程的成绩,要求进行异常处理,对不存在的课程进行捕捉处理。

输入格式: 输入学生所有课程的成绩,每门课占一行,格式为”课程名:成绩“,以空行结束 在提示后输入课程名

输出格式: 如果课程存在,直接输出成绩,否则提示”没有该门课程“

dic={}
while True:
    try:
        a=input()
        
        m,n=map(str,a.split(":"))
        dic[m]=n
    except:
        break
b=input("请输入要查询的课程:\n")
if b in dic.keys():
    print(dic[b])  
else:
    print("没有该门课程")

下标异常

输入一个非空字符串和一个索引值,输出字符串中,该索引值对应的字符。若发现异常,则输出“输入下标有误”

输入格式: 输入一个非空的字符串,再输入一个索引值(Python中可以是正向索引,也可以是反向索引)。

输出格式: 输出字符串中,该索引值对应的字符。若发现异常(如输入的索引值太大或太小,超出字符串的索引值范围;如输入的索引值为非整数等),则输出“输入下标有误”

a=str(input())
try:
    b=int(input())
    print(a[b])
except:
    print("输入下标有误")

两种异常捕获小程序

本题目要求读入2个整数a和b,然后输出它们的商 ,即a/b的值,正常输出结果并保留2位小数,如果出现输入非数值型数据,则捕获异常NameError,并输出the input is not numerical,如果输入的除数b为0,则捕获异常ZeroDivisionError,输出zero division error

输入格式: 在2行中输入2个数据。

输出格式: 在一行中输出a/b的值,保留2位小数,若存在异常则捕获输出相应信息。

try:
          a=int(input())
          b=int(input())
          s=a/b
except ValueError:
            print('the input is not numerical')
except ZeroDivisionError:
            print('zero division error')
else:
            
            print("{:.2f}".format(s))