Python入门基础(10)_异常_1

时间:2019-08-16
本文章向大家介绍Python入门基础(10)_异常_1,主要包括Python入门基础(10)_异常_1使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

最近有点忙,到现在快一个月没写了,罪过罪过,继续学习

异常:python程序在运行时,如果python解释器遇到一个错误,那么程序就会停止执行,并且会提示一些错误信息,这就是异常.

抛出异常:程序停止执行并提示错误信息的动作就是抛出异常.

比如下面这个例子:

num=int(input("请输入一个数字:"))
print("报错了吧!弟弟")

如果我输入的是一个正确的数字,那么会得到下面的结果:

请输入一个数字:1
报错了吧!弟弟

但是如果我输入非数字,将会得到下面的结果:

请输入一个数字:A
Traceback (most recent call last):
  File "C:/Users/users/PycharmProjects/study/zixue_good/socket_py/raise_study.py", line 1, in <module>
    num=int(input("请输入一个数字:"))
ValueError: invalid literal for int() with base 10: 'A'

你会发现程序不止发生错误,就连我的"报错了吧!弟弟"都没有输出来.在程序的开发过程中,很多代码我们是不能确定是否正确;也就是说,在某些代码里面可能会存在异常(如果你是大佬,毫无错误,当我没说过),这时候,我们就需要捕获异常.

1.捕获异常

捕获异常的语法:

  try:

    尝试执行的代码(可能有错误的代码块)

  except:

    出现错误的处理(try里面的代码出现错误之后给点提示)

继续看上面的那个例子,现在代码改写成这样了:

try:
    num=int(input("请输入一个数字:"))
except:
    print("输入数字啊!猪")
print("报错了吧!弟弟")

输入一个正确的数字,except里面的代码并不会执行,因为我的try里面并没有错误:

请输入一个数字:1
报错了吧!弟弟

如果我输入一个非数字的字符,try里面出现错误,except就会执行,后面的print也会继续执行:

请输入一个数字:啊
输入数字啊!猪
报错了吧!弟弟

2.错误类型捕获

 程序在执行的过程中,会有各种各样的类型错误,比如(

BaseException 所有异常的基类
SystemExit 解释器请求退出
KeyboardInterrupt 用户中断执行(通常是输入^C)
Exception 常规错误的基类

)这些类型错误,还有很多种类型错误,感兴趣的可以去菜鸟教程看一下,这里就不一一列举了.语法如下:

  try:

    #尝试执行的代码块

    pass

  except 错误类型1:

    #针对错误类型1,对应的代码处理;

  except (错误类型2,错误类型3):

    #针对错误类型2和3,对应的代码处理;

  except Exception as result:

    print("未知错误%s"%result)

举个例子吧:

try:
    num = int(input("请输入整数:"))
    result = 8 / num
    print(result)
except ValueError:
    print("请输入正确的整数")
except ZeroDivisionError:
    print("除 0 错误")

当我执行了上面的代码之后呢

如果我输入的是非数字字符,就会得到如下结果:
请输入整数:啊
请输入正确的整数

如果我输入0,就会得到如下结果:
请输入整数:0
除 0 错误

如果我输入正确的数字,就会得到如下结果:
请输入整数:2
4.0

但是在实际开发中,为了能够处理复杂的异常情况我们通常会使用下面这种写法:
  try:

     # 尝试执行的代码

     pass

  except 错误类型1:

     # 针对错误类型1,对应的代码处理

     pass

  except 错误类型2:

     # 针对错误类型2,对应的代码处理

     pass

  except (错误类型3, 错误类型4):
    # 针对错误类型3 和 4,对应的代码处理

     pass except

  Exception as result:

     # 打印错误信息

     print(result)

  else:

     # 没有异常才会执行的代码

     pass

  finally:

     # 无论是否有异常,都会执行的代码

     print("无论是否有异常,都会执行的代码")


else 只有在没有异常时才会执行的代码

finally 无论是否有异常,都会执行的代码

try:
    num = int(input("请输入整数:"))
    result = 8 / num
    print(result)
except ValueError:
    print("请输入正确的整数")
except ZeroDivisionError:
    print("除 0 错误")
except Exception as result:
    print("未知错误 %s" % result)
else:
    print("正常执行")
finally:
    print("执行完成,但是不保证正确")

上面例子执行之后得到如下输出结果:

请输入整数:4
2.0
正常执行
执行完成,但是不保证正确

原文地址:https://www.cnblogs.com/xy-l/p/11363434.html