制作网站的公司(深圳),如何建立一个微信小程序,给女友做网站,wordpress 4.7.5 漏洞概述 在上一节#xff0c;我们介绍了Python的面向对象编程#xff0c;包括#xff1a;类的定义、类的使用、类变量、实例变量、实例方法、类方法、静态方法、类的运算符重载、继承等内容。在这一节中#xff0c;我们将介绍Python的异常处理。异常是指程序在运行过程中出现的…概述 在上一节我们介绍了Python的面向对象编程包括类的定义、类的使用、类变量、实例变量、实例方法、类方法、静态方法、类的运算符重载、继承等内容。在这一节中我们将介绍Python的异常处理。异常是指程序在运行过程中出现的不正常情况如文件找不到、除数为零等。异常处理就是要让程序在遇到这些问题时能够进行合理的处理避免因错误而导致的程序崩溃和无法预测的行为。 异常 Python中的异常种类非常多下面列举了一些常见的异常。 SyntaxError语法错误比如代码格式不正确或者关键字拼写错误。 TypeError类型错误比如将不同类型的对象进行操作或者函数参数类型不匹配。 ValueError数值错误比如对字符串进行数值计算时出现无效的输入。 KeyError键错误比如在字典中查找不存在的键时出现错误。 IndexError索引错误比如在列表或字符串中获取不存在的索引时出现错误。 IOError输入输出错误比如文件找不到或无法读取。 Exception通用异常可以捕获所有类型的异常。
# 运行异常ValueError: invalid literal for int() with base 10: hello
a int(hello)
b CSDN
# 运行异常IndexError: string index out of range
print(b[6])
c [C, S, D, N]
# 运行异常ValueError: list.remove(x): x not in list
c.remove(H) 异常处理 Python中的异常处理结构使用try、except、else、finally这四个关键字。其中try和except是必需的而else和finally是可选的。
try:# 可能会引发异常的代码块x 1 / 0
except ZeroDivisionError:# 当try块中发生ZeroDivisionError异常时执行的代码块print(divided by zero)
else:# 当try块中没有发生任何异常时执行的代码块print(no exception)
finally:# 无论是否发生异常都会执行的代码块print(completed) 在上面的示例代码中try块中的代码可能会引发ZeroDivisionError异常。当这个异常发生时程序会跳转到与该异常对应的except块中执行。如果try块中的代码没有引发任何异常程序会跳过except块并执行else块中的代码。无论是否发生异常最终都会执行finally块中的代码。 有时候我们可能想要捕获所有类型的异常。这时可以使用Exception类来捕获所有异常。
try:x 1 / 0
except Exception as e:# 输出exception is: division by zeroprint(exception is:, e) 在上面的示例代码中Exception可以捕获所有类型的异常并将异常对象存储在变量e中。我们可以使用e来获取关于异常的更多信息比如错误消息、堆栈跟踪等。 有时候我们可能想要对不同类型的异常进行不同的处理。这时可以在一个try块中使用多个except块来捕获不同类型的异常也可以在同一个except块中同时处理多个异常这些异常将被放在一个括号里成为一个元组。
try:x int(hello)
except ValueError:print(must be number)
except (TypeError, KeyError, IndexError):print(type error)
except Exception as e:print(other exception:, e) 在上面的示例代码中try块中的代码可能会引发ValueError或TypeError异常。根据异常类型的不同程序会跳转到相应的except块中执行相应的处理逻辑。如果try块中的代码发生了除ValueError和TypeError之外的其他异常程序会跳转到最后一个except块中执行处理逻辑。 有时候我们可能想要在不发生异常时才进行相应的处理。这时可以在所有except块最后添加else块。
try:x int(66)
except (ValueError, TypeError):print(must be number)
else:print(no exception) 还有时候我们可能想要无论是否发生异常都执行某些操作。这时可以使用finally块这可以用来进行释放资源、关闭文件等操作。需要注意的是即使finally块中发生了异常也不会影响之前已经发生的异常的处理逻辑。
try:x int(CSDN)
except (ValueError, TypeError):print(must be number)
finally:print(completed) 抛出异常 在Python中可以通过使用raise语句来主动抛出异常。raise语句的语法格式如下 raise [exceptionName [(reason)]] 其中用[]括起来的为可选参数其作用是指定抛出的异常名称以及异常的相关描述。如果可选参数全部省略则raise会默认抛出RuntimeError异常。如果仅省略reason则在抛出异常时将不带任何的异常描述信息。
try:a 100if a 66:raise ValueError(value error: {}.format(a))
except ValueError as e:print(e) 在上面的示例代码中当a大于66时我们主动抛出了ValueError类型的异常并给出了异常描述信息。在except代码块中我们捕获了异常并输出了这个异常的具体信息。 用户自定义异常 在Python中可以创建用户自定义的异常这是通过创建一个新的异常类型来实现的。这个新的异常类型通常从内置的异常类型Exception类派生出来可以直接继承也可以间接继承。
class MyCustomError(Exception):def __init__(self, msg, code):super().__init__(msg)self.code codetry:raise MyCustomError(custom exception, -2)
except MyCustomError as e:# 输出custom exception -2print(e, e.code)