【语法糖】python异常

异常

一些引言:
Python使用被称为异常的特殊对象来管理程序执行期间发生的错误。每当发生让python不知所措的错误时,它都会创建一个异常对象。如果你编写了处理该异常的代码,程序将继续运行,否则,程序将停止,并显示一个traceback,其中包含有关异常的报告。
异常是使用try-except代码块处理的。try-excpet代码块让Python执行指定的操作,同时报告Python发生异常时怎么办。使用了try-except代码块,即时出现异常,程序也将继续运行,显示你编写的友好的错误信息,而不是令用户迷惑的traceback。


我们都知道,除数不能为0,如果python里做了会怎样呢

print(5/0)

程序会报错,显示为ZeroDivisionError型异常

ZeroDivisionError                         Traceback (most recent call last)
<ipython-input-4-fad870a50e27> in <module>
----> 1 print(5/0)

ZeroDivisionError: division by zero

把可能会出现错误的地方放入try语句中,如果出现了错误则会执行except的内容

try:
    print(5/0)
except ZeroDivisionError:
    print("You can't divide by zero!")

输出效果为:

You can't divide by zero!

这样的报错就很清晰易懂

同样的,try-except语句还可加包含else,形成try-except-else

try代码执行成功的话则执行else部分,出错则执行excpet部分,使得代码的逻辑更清晰。接下来看一个示例程序

print("Give me two numbers, and I'll divide them.")
print("Enter q to quit.")

while True:
    first_number = input("\nFirst number:")
    if first_number == 'q':
        break
    second_number = input("Second number:")
    if second_number == 'q':
        break
    try:
        answer = int(first_number)/int(second_number)
    except ZeroDivisionError:
        print("You can't divide by 0!")
    else:
        print(answer)

最后输出的效果

Give me two numbers, and I'll divide them.
Enter q to quit.

First number:5
Second number:2
2.5

First number:3
Second number:9
0.3333333333333333

First number:8
Second number:0
You can't divide by 0!

First number:8
Second number:q

除了ZeroDivisionError型异常,还有FileNotFoundError型异常 ,也就是找不到文件

我们试着去找一个不存在的文件

filename = 'alice.txt'
with open('filename') as f_obj:
    contents = f_obj.read()

出现了这样的报错

FileNotFoundError                         Traceback (most recent call last)
<ipython-input-10-56788d61a43c> in <module>
      1 filename = 'alice.txt'
      2 
----> 3 with open('filename') as f_obj:
      4     contents = f_obj.read()

FileNotFoundError: [Errno 2] No such file or directory: 'filename'

这个错误是oepn()函数导致的,所以为了读的更清晰,这个异常我们可以将其放入try语句中

filename = 'alice.txt'

try:
    with open('filename') as f_obj:
        contents = f_obj.read()
except FileNotFoundError:
    msg = "Sorry, the file "+filename+" does not exist."
    print(msg)

输出效果为:

Sorry, the file alice.txt does not exist.

另外,我们还可以让python在语句出现错误时,一声不吭,要实现这个效果即可使用pass,将其放入except语句中。
格式如下

try:
	...
except 某种类型错误的名字:
	pass
else:
	...
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值