4.Python异常处理

异常处理
"""
四、异常处理

try:
    #代码块:业务逻辑
    no = input("请输入序号:>>>")
    i  = int(no)
except IndexError as e:
    #一号小弟
    # 上述代码块出错咯,就自动执行当前代码块的内容
    # e是Exception的对象,对象中封装咯错误的内容。 
    print("IndexError:",e)
    i = 1
except ValueError as e:
    #二号小弟
    print("ValueError:",e)
except Exception as e:
    # 老大 
    # 先小弟上,小弟不能解决老大才上。
    print("Exception:",e)
else:
    print("不出错:执行else里面的代码块")
finally:
    print("不管对错,都执行finally")

print(i)


try:
    #代码块:业务逻辑
    no = input("请输入序号:>>>")
    i  = int(no)
    #主动触发异常
    raise Exception("主动触发异常~~~~")

except IndexError as e:
    #一号小弟
    # 上述代码块出错咯,就自动执行当前代码块的内容
    # e是Exception的对象,对象中封装咯错误的内容。 
    print("IndexError:",e)
    i = 1
except ValueError as e:
    #二号小弟
    print("ValueError:",e)
except Exception as e:
    # 老大 
    # 先小弟上,小弟不能解决老大才上。
    print("Exception:",e)
else:
    print("不出错:执行else里面的代码块")
finally:
    print("不管对错,都执行finally")

print(i)

# assert 条件 断言 用于强制用户服从,不服从就报错,
# 可以捕获,但一般不捕获
# assert 1==3 #不服从就报错
assert 1==1   #服从就通过


"""
# 自定义异常
class MyException(Exception):

    def __init__(self,msg):
        self.message = msg

    def __str__(self):
        return self.message


def connect_db():
    return False

def main():
    try:
        result = connect_db()
        # assert 条件 断言 用于强制用户服从,不服从就报错,
        # 可以捕获,但一般不捕获
        # assert 1==3 #不服从就报错
        assert 1==1   #服从就通过

        #主动触发异常
        if not result:
            raise MyException("错误:数据库连接失败咯~~~")
        
    except MyException as e:
        errorMsg = str(e) #__str__
        with open('log','w',encoding='utf8') as fwrite:
            fwrite.write(errorMsg)
        print(e) # ->str(e)->__str__

if __name__ == '__main__':
    main()



你可能感兴趣的:(4.Python异常处理)