了解python 异常处理,捕获未知异常以及自定义异常

了解python 异常处理,捕获未知异常以及自定义异常

Python3 错误和异常

Python3 错误和异常没有异常处理机制异常处理器 except代码示例捕获错误类型捕获未知错误完整的异常语法异常具有传递性自定义异常

小总结

Python3 错误和异常

没有异常处理机制

当我们敲代码时,总时会出现一些语法错误,执行时就会报错,提示我们是什么类型的错误。这时我们就要去修改错误,直到没有语法错误,程序就不会报错(逻辑错误是不会报错的,逻辑错误就是程序执行结果与要达到的要求不同) Value Error:值错误 ZeroDivisionError:除零错误

更多异常点击:等等这些错误

异常处理器 except

except 子句指定一个或多个异常处理器。 当 try 子句中没有发生异常时,没有异常处理器会被执行。 当 try 子句中发生异常时,将启动对异常处理器的搜索。 此搜索会依次检查 except 子句,直至找到与该异常相匹配的子句。 如果存在无表达式的 except 子句,它必须是最后一个;它将匹配任何异常。

代码示例

捕获错误类型

如果我们能够预知这些代码可能会出现什么样的错误,我们就可以直接捕获。

try:

# 提示用户输入一个整数

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

# 使用 8 初一用户输入的整数并且输出

result = 8 / num

print(result)

except ZeroDivisionError:

print("除零错误")

except ValueError:

print("请输入正确的整数")

except:

print("其他错误")

但是我们有时候考虑不了那么全面,所以需要捕获未知的错误

捕获未知错误

try:

# 提示用户输入一个整数

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

# 使用 8 初一用户输入的整数并且输出

result = 8 / num

print(result)

# except ZeroDivisionError:

# print("除零错误")

except ValueError:

print("请输入正确的整数")

except Exception as result:

print("未知错误 %s " % result)

使用 except Exception as result: print("未知错误 %s " % result) 这种格式,就能够捕获未知错误了

完整的异常语法

try:

# 提示用户输入一个整数

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

# 使用 8 初一用户输入的整数并且输出

result = 8 / num

print(result)

# except ZeroDivisionError:

# print("除零错误")

except ValueError:

print("请输入正确的整数")

except Exception as result:

print("未知错误 %s " % result)

else:

# 没有异常才会执行的代码

print("尝试成功")

finally:

# 不论是否出现错误都会执行的代码

print("不论是否出现错误都会执行的代码")

print("-" * 50)

异常具有传递性

def demo1():

return int(input("输入整数:"))

def demo2():

return demo1()

# 利用异常的传递性,在主程序捕获异常

try:

print(demo2())

except Exception as result:

print("未知错误 %s" % result)

首先执行print()函数里的demo2()–> demo2()执行 demo1()函数 --> demo1()接收到字母a,出现语法错误。–>将错误传递返回demo2() --> demo2()函数将错误传递回print()函数–>触发异常机制,执行触发机制。 我展示一下去掉try: except: 时出现的报错情况

自定义异常

def input_password():

# 1. 提示用户输入密码

pwd = input("请输入密码:")

# 2. 判断密码长度 >= 8 , 返回用户输入的密码

if len(pwd) >= 8:

return pwd

# 3. 如果 < 8 主动抛出密码

print("主动抛出异常")

# 1. 创建异常对象

ex = Exception("密码长度不够")

# 2. 主动抛出异常

raise ex

# 提示用户输入密码

while True:

try:

print(input_password())

break

except Exception as result:

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

print("请重新输入...")

print("提交密码")

如果密码不够长,告诉你密码长度不够 如果把try: except: 去掉,我们在输入密码:123,我们就能看见我们熟悉的界面了。

def input_password():

# 1. 提示用户输入密码

pwd = input("请输入密码:")

# 2. 判断密码长度 >= 8 , 返回用户输入的密码

if len(pwd) >= 8:

return pwd

# 3. 如果 < 8 主动抛出密码

# print("主动抛出异常")

# 1. 创建异常对象

ex = Exception("密码长度不够")

# 2. 主动抛出异常

raise ex

print(input_password())

小总结

很多源代码都会使用try: expcpt: 因为这样就能让代码更健壮,更稳定。即使出现Bug也不会使程序崩溃,让客户的体验感更好写。所以在开发程序时,使用try: except: 这种异常处理机制使必不可少的!!! interactiveshell.py的源代码截图

相关推荐

订货宝好用吗
365bet体育投注官网

订货宝好用吗

📅 09-04 👁️ 4313
使用帮助视频教程
365bet提款维护

使用帮助视频教程

📅 08-25 👁️ 3197
唯品会发货都是顺丰吗?发货快不快?
365bet体育投注官网

唯品会发货都是顺丰吗?发货快不快?

📅 07-04 👁️ 9164