22 python 异常

论坛 期权论坛 期权     
咸鱼飞龙门   2019-7-7 23:27   3221   0
异常
python 使用被称为异常的特殊对象来管理程序执行期间发生的错误。每当发生让 python 不知所措的错误时, python 都会创建一个异常对象。如果我们编写了处理该异常的代码,程序将继续运行。
异常使用 try - except 代码块处理,try - except 代码块让 python 执行指定的操作,同时告诉 python 发生异常时怎么办,使用了 try - except 时,即使出现了异常,程序也可以继续运行。
ZeroDivisionError 异常
先来看一个如果没有异常处理的情况。
  1. print(5/0)
复制代码


程序运行报了一个 Traceback ,python 无法操作这个运算。编译器同时也给指出了错误原因。
现在我们把异常捕获给加上。
  1. try:    print(5/0)except ZeroDivisionError:    print("can't divide by zero!")
复制代码


现在程序就捕获了这个错误并且可以继续运行。使用 try - except 可以很好的避免程序崩溃的问题。ZeroDivisionError 错误就是系统给出的除数为零的异常名称,记住就好。
else 代码块
  1. 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    secend_number = input("second number:")    try:        answer = int(first_number)/int(secend_number)    except ZeroDivisionError:        print("can't divide by zero!")    else:        print(answer)
复制代码


依赖于 try 代码执行成功的代码都放在了 else 代码块中,这样在程序没有发生异常,正常执行的时候就可以执行 else 里面的内容了。
FileNotFoundError 异常
在使用文件时,常见的一个错误就是找不到这个文件。如果找不到这个文件程序也会报出异常。
  1. filename = "alice.txt"with open(filename) as f_obj:    contets = f_obj.read()print(contets)
复制代码


在这里就报出了 FileNotFoundError 这个异常。现在我们把异常捕获给加上。
  1. filename = "alice.txt"try:    with open(filename) as f_obj:        contets = f_obj.read()except FileNotFoundError:    msg = "can't find this file"    print(msg)
复制代码


失败时一声不吭
有时我们捕获到异常了,但是没有必要告诉用户,程序可以继续执行下去,这个时候我们可以使用 pass 语句。下面的这个例子不太合适,但是也可以说明这个问题了。
  1. 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    secend_number = input("second number:")    try:        answer = int(first_number)/int(secend_number)    except ZeroDivisionError:        # print("can't divide by zero!")        
复制代码
  1. pass
复制代码
  1.     else:        print(answer)
复制代码


可以看到,当第二次执行出现问题的时候,程序并没有停止,也没有向用户提示输出什么东西,而是直接跳过本次错误继续执行。



打完收工。







喜欢记得来一个好看

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:15
帖子:3
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP