计算机网络/计算机科学与应用/系统/运维/开发

Python【基础】异常处理


# Python 常见异常类型 https://www.runoob.com/python/python-exceptions.html


def division():
    """功能: 分苹果"""
    print("\n", "="*10, "分苹果", "="*10)
    apple = int(input("请输入苹果的个数:"))
    children = int(input("请输入来了几位小朋友:"))
    result = apple//children
    remain = apple - result * children
    if remain > 0:
        print(apple, "个苹果,平均分给", children, "位小朋友,每人分", result, "个,剩下", remain, "个。")
    else:
        print(apple, "个苹果,平均分给", children, "位小朋友,每人分", result, "个。")


# try...except 语句 

if __name__ == '__main__':
    try:
        division()
    except ZeroDivisionError:
        print("\n出错了 ~_~--苹果不能被0位小朋友分!")
    except ValueError as e:
        print("输入错误:", e)


如果需要同时处理多个异常,也可以如下写法:

在except语句后面使用一对小括号将可能出现的异常名称括起来,多个异常名称之间使用逗号分隔

如果想要显示具体的出错原因,那么再加上as指定一个别名


 # except(ValueError,ZeroDivisionError)  合并错误

try:
  division()
except (ValueError,ZeroDivisionError) as e:
  print("出错了,原因是:",e)


# except[ExceptionName [as alias]] 别名

try:
  block1
except[ExceptionName [as alias]]:
  block2


block1:表示可能出现错误的代码块

ExceptionName [as alias]:可选参数,用于指定要捕获的异常。

其中,ExceptionName表示要捕获的异常名称,如果在其右侧加上as alias,则表示为当前的异常指定一个别名,通过该别名,可以记录异常的具体内容

block2:表示进行异常处理的代码块。在这里可以输出固定的提示信息,也可以通过别名输出异常的具体内容


# try…except…else语句  指定当try语句块中没有发现异常时要执行的语句块

if __name__ == '__main__':
    try:
        division()
    except ZeroDivisionError:
        print("\n出错了 ~_~--苹果不能被0位小朋友分!")
    except ValueError as e:
        print("输入错误:", e)
    else:
        print("分苹果顺利完成")


# try…except…finally语句

完整的异常处理语句应该包含finally代码块,通常情况下,无论程序中有无异常产生,finally代码块中的代码都会被执行。

try:
   block1
except[ExceptionName [as alias]]:
   block2
finaly:
   block3

如果程序中有一些在任何情形中都必须执行的代码,那么可以将它们放在finally子句的代码块中


# 综合语句

if __name__ == '__main__':
    try:
        division()
    except ZeroDivisionError:
        print("\n出错了 ~_~--苹果不能被0位小朋友分!")
    except ValueError as e:
        print("输入错误:", e)
    else:
        print("分苹果顺利完成")
    finally:
        print("进行了一次分苹果操作")



Python

世间最珍贵的不是“得不到”和“已失去”,而是现在能把握的幸福。

评论

^