zoukankan      html  css  js  c++  java
  • 异常处理try-except

    异常

    Python使用被称为异常的特殊对象来管理程序的执行期间发生的错误。每当发生让Python不知所措时,它都会创建一个异常对象。

    使用try-except时即便出现异常,程序也能继续运行。

    try-except语法如下:
    try: 正常的操作 ...................... except(): 发生异常,执行这块代码 ...................... else: 如果没有异常执行这块代码


    简单举个例子
    1 a=3
    2 b=0
    3 a/b
    4 a+b
    --------------------------------------------------------------------------
    ZeroDivisionError                         Traceback (most recent call last)
    <ipython-input-57-93411800c26a> in <module>
          1 a=3
          2 b=0
    ----> 3 a/b
          4 a+b
    
    ZeroDivisionError: division by zero

    从上面的程序我们知道因a/b异常导致程序没有继续下面a+b的运算,我们可以写个简单的try-except的语句避免这种现象。
    1 a=3 
    2 b=0
    3 try:#此代码块写出可能引发错我的代码
    4     a/b
    5 except(ZeroDivisionError):#可以用()写出一个或多个错误类型,也可不写
    6     print("除数不能为0")
    7 a+b       
    除数不能为0
    3


    举个try-except-else例子
    1 while True:
    2     first=input("first number:")
    3     if first=="Y":
    4         break
    5     second=input("second number:")
    6     if  second=="E":
    7         break
    8     YE=int(first)/int(second)#input输出的是str,需要转换成数值类型。
    9     print(YE)
    first number:1
    second number:2
    0.5
    first number:2
    second number:3
    0.6666666666666666
    first number:1
    second number:0

    ---------------------------------------------------------------------------

    ZeroDivisionError:

    由上可知出现了除数为0的错误导致程序终止,哪里引发的异常我们就针对这段代码块写个try-except-else的程序
     1 while True:
     2     first=input("first number:")
     3     if first=="Y":
     4         break
     5     second=input("second number:")
     6     if  second=="E":
     7         break
     8     try:#因为YE可能引起异常,在此写try
     9         YE=int(first)/int(second)#input输出的是str,需要转换成数值类型。
    10     except:#可省略错误类型
    11         print("除数不能为0")
    12     else:#没有错误的话继续执行下面的程序
    13         print(YE)
    first number:1
    second number:2
    0.5
    first number:1
    second number:3
    0.3333333333333333
    first number:1
    second number:0
    除数不能为0
    first number:Y

    我们加了一个try-except-else即使出现除数为0的情况程序一直继续运行,直到first=="Y"结束运行


    try-finally 语句

    try-finally 语句无论是否发生异常都将执行最后的代码。

    1 a=3 
    2 b=0
    3 try:#此代码块写出可能引发错我的代码
    4     a/b
    5 finally:
    6     print(2+3)
    5
    
     
    ---------------------------------------------------------------------------
    ZeroDivisionError                         Traceback (most recent call last)
    <ipython-input-76-e428db7b9f9f> in <module>
          2 b=0
          3 try:#此代码块写出可能引发错我的代码
    ----> 4     a/b
          5 finally:
          6     print(2+3)
    
    ZeroDivisionError: division by zero
    
    虽然上面的程序报错了,但依旧执行了2+3。
  • 相关阅读:
    Java程序,JDK的安装、环境的配置
    Oracle数据库,序列、索引、视图
    Oracle数据库,内置函数小结
    Oracle数据库,join多表关联方式、union结果集合并
    Oracle数据库,模糊查询、去重查询
    Oracle数据库,查询语句、内置函数
    Oracle数据库,数据的增、删、改、查
    Unity 3D-Canvas画布的三种模式
    Unity 3D-Navigation网格导航系统使用教程
    Xlua使用教程、攻略
  • 原文地址:https://www.cnblogs.com/ye20190812/p/13386086.html
Copyright © 2011-2022 走看看