Python异常值处理

一、 try-except语句

  1. 首先,执行try子句
  2. 如果没有异常发生,忽略except子句,try子句执行后结束。
  3. 如果在执行try子句的过程中发生异常,那么try子句余下的部分将会被忽略。 如果异常的类型和except之后的名称相符,那么对应的except子句将会被执行,最后执行try语句之后的代码。
  4. 如果一个异常没有与任何的except匹配,那么这个异常将会传递给上层try
"""
try:
    检测范围
except Except[as reason]:
    出现异常后的处理代码
"""

例1:

try:
    int("abc")
    s = 1+'1'
    f = open('test.txt')
    print(f.read())
    f.close()
except OSError as error:
    print('打开文件出错\n原因是:'+str(error))
except TypeError as error:
    print('类型出错\n原因是:'+str(error))
except ValueError as error:
    print('数值出错\n原因是:'+str(error))

结果:数值出错
原因是:invalid literal for int() with base 10: ‘abc’

例2:

dict1 = {'a':1,'b':2,'v':22}
try:
    x = dict1['y']
except LookupError:
    print('查询错误')
except KeyError:
    print('健错误')
else:
    print(x)

结果:查询错误

例3:

try:
    s = 1+'1'
    int("abc")
    f = open('test.txt')
    print(f.read())
    f.close()
except (OSError,TypeError,ValueError) as error:
    print('出错了!\n原因是:'+str(error))

二、try—except-else语句

# 如果在try子句执行时没有发生异常,python将执行else语句后的语句
"""
try:
    检测范围
except:
    出现异常后的处理代码
else:
    如果没有异常执行这块代码
"""

例1:

# 注意:else的存在必须以except语句的存在为前提,在没有except语句的try语句中使用else语句,会引发语句错误。
try:
    fh = open("testfile","w")
    fh.write("这是一个测试文件,用于测试异常!")
except IOError:
    print("Error:没有找到文件或读取文件失败")
else:
    print("内容写入文件成功")
    fh.close()

输出结果:内容写入文件成功

三、raise语句
python使用raise语句抛出一个指定的异常
例1:

try:
    raise NameError('HiThere')
except NameError:
    print("An exception flew by!")

练习题:
题目描述:随机产生0-100之间的随机数字,让用户猜,如果用户猜的数字比这个数字大,则提示太大,否则太小,当用户正好猜中的时候,会提示,“恭喜你,你猜到的这个数字是……”。当用户欸此猜测之前程序会输出用户是第几次猜测,如果用户输入的不是一个数字,程序会告诉用户“输入无效”。

import random
num = random.randint(0,100)
try:
    temp=input('第 次猜测,请输入一个整型数字:')
    guess = int(temp)
    isinstance(guess,int)
    if guess > num:
        print("大了,大了")
    else:
        if guess < num:
            print("太小")
        else:
            print("恭喜你猜到了了这个数是:num")
except:
    print("输入无效")

但还有错误,之后修改。

你可能感兴趣的:(笔记,python)