• Python中的异常处理


    异常

        在程序开发中,如果对于某些代码的执行不确定(程序的语法完全正确),并非程序本身的错误,是与外界交互时,外界输入不规范造成的。以下是处理异常的方法:

    一、单个异常:

    # 只有一个异常产生

    try:

        num = int(raw_input("请输入一个整数:"))

    except:
        print "请输入一个整型"

    二、多个异常 

        如果有多个异常时,可以在except后边添加异常的类型。(异常的类型可以通过错误测试得到;当python解释器出现异常时,最后一行提示的第一个单词为错误类型)

    # 多个异常产生,使用多个except.
    try:

        num = int(raw_input("请输入一个整数:"))

        reslt = 8 / num

        print   reslt

    except  ZeroDivisionError:

        print  "除数不能为0!"

    except  ValueError:

        print  "类型不正确,请输入整数!"

    三、捕获未知异常:

        在开发的时候,要判断所有可能出现的异常是一定的难度的。所以,如果希望程序无论出现任何错误,都不会因python解释器抛出的异常而终止,我们再可以增加一个except来接收未知错误。   

    # 有未知异常的时候,进行如下捕获 
    try:

        num = int(raw_input("请输入一个整数:"))

        reslt = 8 / num

        print  reslt

    except  ZeroDivisionErrot:

        print  "除数不能为0"

    except  Exception  as  result:      # result变量是随便起的,可以接收错误信息

        print  "未知异常:%s"  % result 

    四、完整的异常捕获:

        使用关键字:try ---> else ---> finally ;其中try后面为可能出现异常的代码,else后为可能为结果正确的才会执行的码,finally后为无论程序是否有异常,都会执行的代码。

    try:

        num = int(raw_input("请输入一个整数:"))

        reslt = 8 / num

        print  reslt

    except  ZeroDivisionErrot:

        print  "除数不能为0"

    # 捕获未知异常

    except  Exception  as  result:      # result变量是随便起的,可以接收错误信息

        print  "未知异常:%s"  % result

    # 只有程序正确的时候,才会执行else

    esle:

        print  "程序正常执行!"

    # 程序无论是否异常,都会执行finally中代码

    finally:

        print  "hello world!!!"

    五、主动抛出异常情况:
    # 实例:输入一个密码。当密码为长度 >= 8合理,返回密码输入的密码;否则异常

    def  demo()

        # 提示用户输入密码

        pawd = raw_input("请输入密码:")

        # 对密码的长度进行判断

        if  len(pawd) >= 8:

            return  pawd

        # 当密码长度小于8时,主动抛出异常(首先创建异常对象,添加异常信息)

        expt = Exception("密码长度不够!!!")

        raise  expt

    # 注意:只抛出异常而不捕获,会出现错误;以下是捕获异常的部分

    try:

        print  demo()   # 若密码正确,输出密码;错误的话,输出错误的提示信息

    except  Exception  as  result:

        print  "异常信息提示:%s"  %result

    else:

        print  "密码设计成功!!"

     
  • 相关阅读:
    Python深入05 装饰器
    Python深入04 闭包
    Python深入03 对象的属性
    Ubuntu (虚拟机同样) 更换内核?
    .out
    GCC 编译详解
    linux 编译内核 /boot空间不足?
    Java Swing提供的文件选择对话框
    Java Swing 实时刷新JTextArea,以显示不断append的内容?
    为什么要编译Linux内核?
  • 原文地址:https://www.cnblogs.com/uthnb/p/9618306.html
Copyright © 2020-2023  润新知