python异常处理


这里主要讨论在python中,遇到异常时处理。
1、try…except

首先,执行 try 子句 ,如果没有异常发生,except 子句 在 try 语句执行完毕后就被忽略了。如果在 try 子句执行过程中发生了异常,那么该子句其余的部分就会被忽略。如果异常匹配于 except 关键字后面指定的异常类型,就执行对应的 except 子句。然后继续执行 try 语句之后的代码。如果发生了一个异常,在 except 子句中没有与之匹配的分支,它就会传递到上一级 try 语句中。如果最终仍找不到对应的处理语句,它就成为一个 未处理异常,终止程序运行,显示提示信息。

我们把可能发生错误的语句放在try模块里,用except来处理异常。except可以处理一个专门的异常,也可以处理一组圆括号中的异常,如果except后没有指定异常,则默认处理所有的异常。注意:每一个try,都必须至少有一个except。

这里写图片描述


2、raise 引发一个异常

使用 raise 语句抛出一个异常,举例:实现一个函数 Hours( ),将用户输入的分钟数 转化为小时数和分钟数,并要求小时数尽量大。讲结果以 XX H, XX M 的形式打印出来。(注意打印格式中的空格)
要求用户能够通过命令行输入分钟数,程序需要打印出相应的小时数和分钟数。如果用户输入的是一个负值,程序需要报错 ValueError,需要进行 try…except 操作来控制异常。如果异常,在屏幕上打印出 ValueError: Input number cannot be negative 提示用户输入的值有误。


a = input("please input a positive number:")

def hours(b):
    n = b / 60
    m = b % 60
    print("%d H, %d M" % (n, m))

if int(a) < 0:
    try:
        raise ValueError
    except ValueError:
        print("this is a negative number.")
else:
    hours(int(a))

raise ValueError后面也可以接括号提示出现这类错误的信息。例如:
raise ValueError(”this is a negative number.”)

3、try … finally

无论异常是否发生,在程序结束前,finally中的语句都会被执行。

a = 10
b = 0
try:
    print(a/b)
except:
    print("error")
finally:
    print("all done")

最后结果输出:
error
all done

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值