python基础----异常处理

发布于 2021-04-17 02:21 ,所属分类:知识学习综合资讯

点击上方“Python入门到进阶”,选择“星标”gongzhong号

重磅干货,第一时间送达


异常(Exception)
您已经在之前的代码中看到了异常。当由于错误的代码或输入出现问题时,它们就会发生。发生异常时,程序将立即停止。以下代码通过尝试将7除以0来产生ZeroDivisionError异常。
num1 = 7num2 = 0print(num1 / num2)


不同的异常被抛出是因为不同的原因:

常见异常:

ImportError:导入失败;

IndexError:列表索引超出范围;

NameError:使用了未知变量;

SyntaxError:无法正确解析代码;

TypeError:对不适当类型的值调用函数;

ValueError:在正确类型的值上调用了一个函数,但是值不正确。

Tips:Python还有其他一些内置的异常,例如ZeroDivisionError和OSError。第三方库也经常定义自己的异常。




异常处理(Exception Handing)


要处理异常并在发生异常时调用代码,可以使用try /except语句。
try语句块包含可能引发异常的代码。如果发生该异常,try块中的代码将停止执行,except块中的代码将运行。如果没有错误发生,那么except块中的代码将不会运行。

For example:
try:    num1 = 7    num2 = 0    print(num1 / num2)    print("Done calculation")except ZeroDivisionError:    print("An error occurred")print("duetizerodivision")
Tips : 在上面的代码中,except语句定义了要处理的异常的类型(在我们的示例中为ZeroDivisionError)

一个try语句可以有多个不同的except块来处理不同的异常。

也可以使用括号将多个异常放入单个except块中,以使except块处理所有异常。

For example:
try:    variable = 10    print(variable + "hello")    print(variable / 2)except ZeroDivisionError:    print("Divided by zero")except (ValueError, TypeError):print("Erroroccurred")
没有指定任何异常的except语句将捕获所有错误。应当谨慎使用它们,因为它们会捕获意外的错误并隐藏编程错误。
For example:
try:    word = "Hello"    print(word / 0)
except: print("An Error occurred")


finally子句

为了确保无论发生什么错误都可以运行某些代码,可以使用finally语句。 finally语句位于try / except语句的底部。 finally语句中的代码始终在try中的代码(可能在except块中)执行后运行。

For example:


try:    print("Hello")    print(1 / 0)except ZeroDivisionError:    print("Divided by zero")finally:    print("This code will run no matter what")

Tips :如果在前面的块之一中发生未捕获的异常,则finally语句中对的代码甚至会运行。

For example:

try:    print(1)    print(10 / 0)except ZeroDivisionError:    print(unknown_var)finally:    print("This is executed last")



抛出异常(Raising Exceptions)

你可以使用raise语句引发异常

For example:

print(1)raise ValueErrorprint(2)

Tips : 你需要指定引发的异常的类型!!!

可以使用提供有关异常详细信息的参数来引发异常。

For example:

name="123"raise NameError("Invalid name!")

在except块中,raise语句可以不带任何参数来重新引发发生的任何异常。

For example:

try:    num = 5 / 0except:    print("An error occurred")raise

Tips:运行一下代码看看它是如何工作的吧!



断言(Assertion)

断言是一种健全性检查,您可以在测试完程序后打开或者关闭它。测试表达式,如果结果为假,则引发异常。断言是通过assert语句来执行的。

For example:

print(1)assert 2 + 2 == 4print(2)assert 1 + 1 == 3print(3)

Tips : 程序员通常将断言放在函数的开头以检查有效输入,而在函数调用之后则进行断言以检查有效输出。



写在最后

本节给大家介绍了Python语法中的重点内容 ------ 异常处理。在前期学习过程中用到的不多,但是不管在什么语言中都是适用的,所以提前掌握一遍没什么坏处。勤能补拙是良训,希望大家还是动手做一做,有问题可以私信我,欢迎交流和提出您的宝贵意见。


你要偷偷学Python,然后惊艳所有人。


-END-


感谢大家的关注

你关心的,都在这里




相关资源