文件异常处理

错误包含两种错误,语法错误以及逻辑错误。
语法错误指的就是不按照代码规定写代码,逻辑错误指的是编程逻辑上出现错误,比如1/0这样的错误。异常处理实际上就是程序运行时发生错误的信号。 

异常处理是什么? 

捕捉到发生错误的代码,为其执行特定的逻辑,这就是异常处理

异常的组成有哪些? 

 为什么要去处理异常?

异常触发后没有被处理的情况下,程序就会在当前异常处终止,后边的代码就不会运行,必须提供一种异常处理机制增强程序的健壮性和容错性。

如何进行异常处理?

异常是由于错误引发的,语法上的错误与异常处理无关,必须在程序运行前就进行修正。

 一、用if进行判断

__author__ = 'iCake'

age = input(">>: ")

if age.isdigit():    # 用户输入为数字
    int(age)         # 主逻辑
elif age.isspace():  # 用户输入为空格
    print("用户输入为空格")
elif len(age) == 0:  # 用户输入为空
    print("用户输入的为空")
else:                # 用户输入为其他 
    print("非法输入")

 结论:如果有十段程序,就要不断的去复制代码,导致程序可读性非常的差

 二、异常处理的基本方式

try:
    被检测的代码块
except 异常类型:运行逻辑

__author__ = "iCake"

try:
    age = input(">>: ")
    int(age)
except ValueError as v_error:
    print("v_error")
except KeyError as k_error:
    print("k_error")
except IndexError as in_error:
    print("In_error")

异常实质上就是一个类,基本的异常有: 

异常的类型
AttributeError试图访问一个对象没有的属性,比如foo.x,但是foo没有属性x
IOError输入/输出异常;基本上是无法打开文件
ImportError无法引入模块或包;基本上是路径问题或名称错误
IndentationError语法错误(的子类) ; 代码没有正确对齐
IndexError下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5]
KeyError试图访问字典里不存在的键
KeyboardInterruptCtr1+c被按下
SyntaxError代码非法,语法错误
NameError使用一一个 还未被赋予对象的变量
TypeError传入对象类型与要求的不符合
UnboundLocalError试图访问一个还未被设置的局部变量,基本上是由于另有一一个同名的全局变量,导致你以为正在访问它
ValueError传入一个调用者不期望的值,即使值的类型是正确的

万能异常:

except Exception:                             # 万能异常
    print("error")

三、异常的其他结构

__author__ = "iCake"

try:
    age = input(">>: ")
    int(age)
except ValueError as error:
    print("这是错误", error)
except KeyError as k_error:
    print(k_error)
except IndexError as k_error:
    print("In_error")
except Exception:                             # 万能异常
    print("error")
else:
    print("try中没有异常才会执行else")
finally:
    print("无论是否有异常,都会执行的模块")         # 执行清理工作

断言:

关键字 assert

__author__ = 'iCake'
a = 1
assert a == 2
assert a == 1

错误类型会是断言错误

什么时候用异常处理呢? 

应该尽量少用,与你主要的工作没有关系,在一些异常无法预知的时候才能使用try except 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值