python3 异常

80 阅读1分钟
# 异常

try:
    open("abc.txt")
except:
    print("error")

# 捕获特定的异常
try:
    print(num)
except NameError:
    print("name error")

# 捕获多个异常
try:
    print(num)
    print(1 / 0)
except (NameError, ZeroDivisionError):
    print("多个异常错误")

# 捕获多个异常的描述信息
try:
    print(num)
    print(1 / 0)
except (NameError, ZeroDivisionError) as result:
    print(result)  # name 'num' is not defined

# 捕获所有的异常
try:
    print(num)
except Exception as result:
    print(result)  # name 'num' is not defined

# else表示没有异常要执行的代码
try:
    print("Hello world")
except Exception as result:
    print(result)
else:
    print("没有异常")
'''
Hello world
没有异常
'''

# finally 无论是否异常,都会执行
try:
    print(1)
except Exception as result:
    print(result)
else:
    print("没有异常")
finally:
    print("finally")
'''
1
没有异常
finally
'''


# 异常传递
# import time

# try:
#     f = open("1.txt")
#     try:
#         while True:
#             content = f.readline()
#             if len(content) == 0:
#                 break
#             print(content)
#             time.sleep(3)
#     except:
#         print("程序被终止,可能是被ctrl+C")
# except:
#     print("文件不存在")

# 抛出异常
class My_Exception(Exception):
    def __init__(self, age):
        self.age = age

    def __str__(self):
        return f"最大的年龄不能超过120岁,当前的年龄为 {self.age}"


def my_add(b):
    raise My_Exception(b)


try:
    my_add(130)
except Exception as result:
    print(result)  # 最大的年龄不能超过120岁,当前的年龄为 130