PYTHON 异常的使用(2)

#简单一场案例3
try:
    num=int(input('please input your number'))
    rst=100/num
    print('计算结果为{0}'.format(rst))
except ZeroDivisionError as e:
    print('counter problem')
    print(e)
except NameError as e:
    print('名字起错了')
    print(e)
    exit()
except AttributeError as e:
    print('好像属性有问题')
    print(e)
    exit()
#所有异常都是继承自Exception
#此语句任何的异常都会被拦截
#并且这句话一定要是最后一个
except Exception as e:
    print('具体错误不知道')

-注:如果知道的具体的错误需要写在前面
     在异常继承关系中,越是子类的异常,越要往前放,父类的异常需要往后放


-用户手动引发的异常
    某些情况下用户希望自己引发一个异常的时候使用
    raise 关键字来引发异常
#raise案例
try
    print('我爱哈尔滨')
    print('前方到站哈尔滨')
    #手动异常语法
    raise ValueError
    print('贼冷')
except NameError as e:
    print('NameError')
except ValueError as e:
    print('ValueError')
except Exception as e:
    print('具体错误不知道')
finally:
    print('over')
>>我爱哈尔滨
>>前方到站哈尔滨
>>valueError
>>over
#raise案例-2
#此处还可以自己定义异常
#但是自己定义的异常必须是系统异常的子类
class PandaError(ValueError):
    pass
try
    print('我爱哈尔滨')
    print('前方到站哈尔滨')
    #手动异常语法
    raise PandaError
    print('贼冷')
except NameError as e:
    print('NameError')
except PandaError as e:
    print('PandaError')
except ValueError as e:
    print('ValueError')
except Exception as e:
    print('具体错误不知道')
finally:
    print('over')
>>我爱哈尔滨
>>前方到站哈尔滨
>>PandaError
>>over

-else语句案例
try:
    num=int(input('please input your number'))
    rst=100/num
    print('计算结果为{0}'.format(rst))
except Exception as e:
    print('出错')
else:
    print('无措')
finally:
    print('over')
>>please input your number50
>>计算结果为2
>>无措

-关于自定义异常问题(了解)
    如果是自定义异常则推荐自定义异常
    在自定义异常的时候一般要有一下内容
        自定义异常发生异常的异常代码
        发生异常后的提升
        自定义发生异常的行数

猜你喜欢

转载自blog.csdn.net/qq_41609475/article/details/84491458