Why-为什么要用到try-except

我们在第一次接触到try-except的时候可能会有一点懵圈,实际上处理异常是非常重要的,你不可能确定地说我整段代码在任何环境下都可以顺利运行,这时候就需要用到try-except。
比如:读写文件时候文件打开错误或者文件写入错误,写爬虫时网络请求失败,返回错误404.再或者函数处理一些不确定参数时候,都可以用到异常捕获。若是不处理,程序就会中止,但我们希望它继续运行。

How-怎么运用try-except

例如,我们请求一个网页
我们并不会总是连接成功,有时候请求网络问题,或者我的服务器没开,这时候就会报错,但我们可以把异常捕捉后使程序继续。

 import requests
 
 try:
     html = requests.get('https://jinfrost.xyz/')
     print("连接成功")
 except:
     print("连接错误")
    
 print("继续执行")

若是在请求的时候失败,可以看到print(连接成功")会被跳过,不会执行,直接跳到except。


我们也可以捕捉某个具体的错误,并把它打印出来。

 try:
     f=open('blah','r')
 except IOError as ex:
     print ("could not open file:",ex)

我们同样可以在一个try语句使用多个except语句,或者在一个except语句中捕获多个异常
like this

 def safe_ float(obj):
     try:
         retval= float(obj)
     except (ValueError, TypeError):
         retva='参数必须是数字或者可数字化的字符串'
         print(retval)
     return retval

safe_float( 'dsgfsdgds')
safe_ float(25.36)
safe_ float(454)



try-finally更好理解:语句无论是否发生异常都将执行finally的代码。

try:
    <语句>
finally:
    <语句>    #退出try时总会执行

总结

刚开始我讲过一个捕获所有异常的方法:
except:
不过这种方法不推荐使用,比如KeyboardInterupt代表用户按下了 CTRL-C (^C) , 想要关闭 Python。但是它却会被except:捕捉,于是用户就无法退出了。。
try-except 语句是为了更好地跟踪潜在的错误,但是你最好减少捕获所有异常的写法。
practice makes perfect



Last modification:April 4th, 2020 at 09:21 pm
If you think my article is useful to you, please feel free to appreciate