python中的异常处理

异常是什么

python使用异常对象来表示异常状态,并在遇到错误时引发异常,异常对象未被处理时,程序将终止并显示一条错误信息。

让事情沿你指定的轨道出错

raise语句
In [59]: raise Exception
---------------------------------------------------------------------------
Exception                                 Traceback (most recent call last)
<ipython-input-59-2aee0157c87b> in <module>
----> 1 raise Exception

Exception:

In [60]: raise Exception('NullPointException')
---------------------------------------------------------------------------
Exception                                 Traceback (most recent call last)
<ipython-input-60-b8fd742899da> in <module>
----> 1 raise Exception('NullPointException')

Exception: NullPointException

在这里插入图片描述

自定义异常类
class SomeCustomException(Exception): pass
class MyExceptionClass(Exception):

    def __init__(self, code, msg):
        self.code = code
        self.msg = msg
        super(MyExceptionClass, self).__init__()

    @staticmethod
    def test():
        content = input("input Str:")
        if len(content) > 5:
            raise MyExceptionClass('1001', '长度小于5')
        else:
            print(content)


if __name__ == '__main__':
    MyExceptionClass.test()
    
# input Str:123456
# Traceback (most recent call last):
#   File "D:/pythonProject/demo1124/com/example/demo1214/MyExceptionClass.py", line 18, in <module>
#     MyExceptionClass.test()
#   File "D:/pythonProject/demo1124/com/example/demo1214/MyExceptionClass.py", line 12, in test
#     raise MyExceptionClass('1001', '长度小于5')
# __main__.MyExceptionClass

捕获异常

class TryDemo(object):

    def test(self):
        a = int(input("输入第一个数:"))
        print('\n')
        b = int(input("输入第二个数:"))
        print(a / b)
        
if __name__ == '__main__':
    tryDemo = TryDemo()
    tryDemo.test()
输入第一个数:10
输入第二个数:0
Traceback (most recent call last):
  File "D:/pythonProject/demo1124/com/example/demo1214/TryDemo.py", line 12, in <module>
    tryDemo.test()
  File "D:/pythonProject/demo1124/com/example/demo1214/TryDemo.py", line 7, in test
    print(a / b)
ZeroDivisionError: division by zero

捕获异常

def test():
    a = int(input("输入第一个数:"))
    b = int(input("输入第二个数:"))
    try:
        print(a / b)
    except ZeroDivisionError:
        print("第二个数不能为0")


class TryDemo(object):
    pass


if __name__ == '__main__':
    tryDemo = TryDemo()
    test()

输入第一个数:10
输入第二个数:0
第二个数不能为0
不用提供参数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值