python进阶 day09异常处理

发布时间 2023-09-12 10:31:49作者: Rubbish雀

异常处理

语法异常

(错误都是SyntaxError)
if  # SyntaxError
0 = 1  # SyntaxError

try:  #尝试
    num = input('输入一个值')
    print(3) #代码自上而下,上面会运行
    1/int(num) #错误不影响其他的代码,报错马上终止try缩进里面的代码
    print(4)
except ZeroDivisionError as e: #除此之外 #try里面的代码出了什么错误,就待用什么错误捕捉
    print(e)  #输出 division by zero as将错误赋值给e
print(1)
try:  # 尝试
    num = input('输入一个值')  # 123124
    dic = {'0': 'a'}
    print(dic[num])  # dic['123124']

    print(3)  # 代码自上而下,上面会运行
    1 / int(num)  # 错误不影响其他的代码,报错马上终止try缩进里面的代码
    print(4)

except ZeroDivisionError as e:  
    print('e:', e)
except KeyError as e:  # 可以写多个except捕捉多个异常
    print('e:', e)try:
    if
except Exception as e:  # 语法错误无法捕捉
    print(e)

最重要的,以后想要捕捉异常就用这个,只要记住这个就够用了

except Exception as e:  # Exception可以捕捉任意异常
    print('e:', e)

接下来讲的也是了解部分

finally

print(1)
try:  # 尝试
    1 / 1
except Exception as e:  # Exception可以捕捉任意异常
    print('e:', e)
finally:  # 最终的意思,无论报不报错都会打印 明天讲文件处理的时候带着你用
    print(3)

print(2)

open read close

f = open('test.py','r')
data = f.read()
try:
    1/0
    print(data)
    # del f # 只删掉了f,变量名,对操作系统的占用不会关闭
except Exception as e:
    print('e:',e)
finally:
    f.close()  # 即删除f的引用,又会命令操作系统关闭对外存文件的占用

assert 断言,最早的时候没有pycharm,那这个做调试,一辈子都用不上了

a = 1

a += 1

assert a == 3  # 条件成立会跳过,条件错误会报AssertionError错误

print(3) 

raise 主动抛错,没有用. 创建框架/创建语言 C/C++ 有用

print(1)
raise ZeroDivisionError('傻逼吧,主动抛错干嘛')
print(2)

基本没用