> 文章列表 > Python从入门到精通9天(异常的处理)

Python从入门到精通9天(异常的处理)

Python从入门到精通9天(异常的处理)

异常处理

  • 异常处理语句
  • 多个异常
  • raise关键字
  • 常见的异常类型
  • 自定义异常

异常处理语句

在了解异常处理之前,我们先对它的语句进行说明,如下:

try:表示测试代码块以查找错误

except:表示处理错误

finally:表示无论try和except返回的结果如何,都必须执行

else:表示所有异常都不执行就返回else关键字下的异常处理

代码如下:

try:# 需要执行的语句# x没有定义,程序必然会报错print(x)
except Exception as e:# 将错误进行打印print(e)   #name 'x' is not defined
finally:# 不管怎样都地执行print("我已经执行完毕")

如果没有try except语句,那么程序将会报一大堆地红色错误,except语句负责捕获异常,并将结果进行返回。

多个异常

当程序出现多个异常时,可以根据自己地需要定义多个Exception,即定义错误地类型。

代码如下:

try:# 除数不能为0# 这里可以使用内置的 ZeroDivisionError类型a = 3 / 0except NameError as e:print(e)
except ValueError as f:print(f)
except:print("其他的异常")

或者使用else语句进行输出,当所有的异常都不是报错的类型时,则执行else语句。

代码如下:

try:a = 3/0
except NameError as e:print(e)
except ValueError as f:print(f)
else:print("其他的异常")

raise关键字

raise关键字用来引发异常,并且能够定义所引发异常类型、以及打印给用户的文本。这个关键字能够在使用条件语句的时候抛出异常。

代码如下:

try:a = int(input("请输入一个整数"))if a > 10:raise TypeError("输出的数太大了,抛出异常")
except TypeError as e:print(e)

常见的异常类型

以下是一些常见的异常类型:

ValueError:传递给函数的参数无效或不正确。

TypeError:函数或操作应用于不适当的数据类型。

AttributeError:尝试访问对象不存在的属性。

KeyError:试图访问不存在的字典键。

IndexError:尝试访问不存在的列表索引或元组索引。

IOError:在执行文件操作时发生输入/输出错误。

ImportError:尝试导入无法找到的模块或包。

ZeroDivisionError:除数不能为零。

KeyboardInterrupt:用户中断了程序的执行。

NameError:尝试访问不存在的变量或函数。

NotImplementedError:尝试调用尚未实现的方法。

自定义异常

我们在处理异常时,不知道python自带的异常有哪些,我们想自定义异常,同时还能让python解释器进行识别。这时候我们该怎么办呢?

代码如下:

# 创建一个类使它继承Exception父类
# 这里就相当于创建了一个自己的异常类class MyError(Exception):# 给定一个msg参数,用于接收异常的信息def __init__(self,msg):self.msg = msgtry:a = int(input("请输入一个整数"))if a > 10:# 使用raise关键字进行异常的抛出raise MyError("输出的数太大了,抛出异常")
except MyError as e:print(e)