python之异常处理

1、概念

即使一条语句或表达式在语法上是正确的,当试图执行它时也可能会引发错误。运行期检测到的错误称为异常

num = 0
print("num = ",num1)
print("num = " +num)
print("1 / 0 = ", 1 /num)

以上3条打印语句分别执行,会依次出现对应的错误提示。

(1)命名错误(NameError)

(2)类型错误(TypeError)

(3)零除错误(ZeroDivisionError)

 通过编程捕获异常并处理是可行的

while True:
 try: 
    num = int(input("请输入一个数值:")) 
    print("您输入的数值是:",num)
     break 
except ValueError: 
    print("您输入的不是合法的数据,请重新输入。")

 try语句按如下方式工作:

•首先,执行try子句(在try和except关键字之间的部分)。如果没有异常发生,except子句在try语句执行完毕后就被忽略了。

•如果在try子句执行过程中发生了异常,那么该子句其余的部分就会被忽略。

•如果异常匹配于except关键字后面指定的异常类型,就执行对应的except子句。然后继续执行try语句之后的代码。

•如果发生了一个异常,在except子句中没有与之匹配的分支,它就会传递到上一级try语句中。

•如果最终仍找不到对应的处理语句,它就成为一个未处理异常,终止程序运行,显示提示信息。

•一个try语句可能包含多个except子句,分别指定处理不同的异常。至多只会有一个分支被执行。

•异常处理程序只会处理对应的try子句中发生的异常,在同一个try语句中,其他子句中发生的异常则不作处理。

•一个except子句可以在括号中列出多个异常的名字,例如:

try:
    with open('my_text01.txt','r',encoding='utf-8')as f:
        x=int(f.read())
        print(x)
        print('file is doing')
except ZeroDivisionError:
    print('除零异常!')
except FileNotFoundError:
    print('文件找不到!')
except Exception:
    print('其他错误!')

 运行结果:

try:
    f=open('my_text01.txt','r',encoding='utf-8')
    x=int(f.read())
    print(x)
    print('file is doing')
except ZeroDivisionError:
    print('除零异常!')
except FileNotFoundError:
    print('文件找不到!')
except Exception as e:
    print('其他错误!',e)

finally:
    f.close()
    print('file is close')

运行结果:

2、处理 函数里return一旦执行,后面语句就不执行了

def fun():
    try:
        return 1
    except Exception as e:
        print('exaeption',e)
    finally:
        print('here is running!')
        return 2

x=fun()
print(x)

 执行结果:

3.自定义一个异常,并把它打印出来

try:
    raise  NameError('名字起的有问题!')
except NameError as e :
    print(e)

执行结果:

class MyException(Exception):
    def __init__(self,value):
        self.value=value
try:
    raise MyException('我自己设置的异常')
except MyException as  e:
    print(e.value)

执行结果:

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值