python 异常

1、异常的语法

try:
    # 正常执行的语句
    pass
except Exception1:
    # 针对异常情况1 进行的异常处理
    pass
except Exception2:
    # 针对异常情况2 进行的异常处理
    pass
except (Exception3,Exception4):
    # 针对异常情况3和异常情况4进行的异常处理
    pass
except Exception as exp:
    # 打印异常信息
    print(exp)
else:
    # 没有异常时才会执行的代码
    pass
finally:
    # 无论有无异常,都会执行的代码
    pass

2、异常的传递性

异常具有传递性,所有的异常都会逐级向上上报。通常为了避免try的语法泛滥,都会尽量在上一级进行try语句。正因为异常具有传递性,所以在控制台中能够进行错误溯源。

demo
class divide(object):

    def divide_method(self,i):
        """将除数除以8整除"""
        return 8/i

    def divide_method_test(self):
        self.divide_method()
        

d = divide()
d.divide_method(0)

Traceback (most recent call last):
  File "c:/Users/zhuji/Desktop/python/divide.py", line 12, in 
    d.divide_method(0)
  File "c:/Users/zhuji/Desktop/python/divide.py", line 5, in divide_method
    return 8/i
ZeroDivisionError: division by zero

3、主动抛出异常

主动跑出异常具有以下两个操作步骤:

  • 对Exception进行实例化
  • 使用 raise 关键字抛出异常

def is_name_right():
    name = "david"
    if len(name)==5:
        return name
    raise Exception("名字长度不是5")
    
print(is_name_right())
david
def is_name_right():
    name = "bob"
    if len(name)==5:
        return name
    raise Exception("名字长度不是5")
    
print(is_name_right())

Traceback (most recent call last):
  File "c:/Users/zhuji/Desktop/python/raiseError.py", line 8, in 
    print(is_name_right())
  File "c:/Users/zhuji/Desktop/python/raiseError.py", line 6, in is_name_right
    raise Exception("名字长度不是5")
Exception: 名字长度不是5

你可能感兴趣的:(python 异常)