码迷,mamicode.com
首页 > 编程语言 > 详细

Python 错误和异常

时间:2019-12-18 12:41:09      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:color   return   int   语法   自定义   __init__   系统   内存   close   

 

常见错误

NameError--使用未定义的变量

SyntaxError--语法错误,常见程序格式不对。如if a后没有:

IOError--打开一个不存在的文件或文件

ZeroDivisionError--除零错误,即分母为零

ValueError--传入值无效,强制类型转换时产生。如a=int(‘dd‘)

KeyboardInterrupt--键盘中断错误,强制终止程序时产生。

 

 

错误

语法错误:代码不符合解释器或者编译器语法

逻辑错误:不完整或者不合法输入或者计算出现问题

异常

程序遇到逻辑或者算法问题

运行过程中计算机错误(内存不够或IO错误)

如果没有手动对异常进行处理,那么该异常就会被解释器捕获并处理,处理的方法为忽略或终止程序

区别

错误是非正常的,是根本不应该出现的,比如缩进字符

异常是一种程序运行条件,而非严重错误,比如用户输入过大

 

异常处理

try/except

异常捕捉可以使用 try/except 语句。

技术图片

 

 

 实例:

while True: try:
        x = int(input("请输入一个数字: "))
        break
    except ValueError:
        print("您输入的不是数字,请再次尝试输入!")

#让用户输入一个合法的整数,但是允许用户中断这个程序(使用 Control-C 或者操作系统提供的方法)。用户中断的信息会引发一个 KeyboardInterrupt 异常。

try/except...else

try/except 语句还有一个可选的 else 子句,如果使用这个子句,那么必须放在所有的 except 子句之后。

else 子句将在 try 子句没有发生任何异常的时候执行。

技术图片

 

 

 实例:

for arg in sys.argv[1:]:
    try:
        f = open(arg, r)
    except IOError:
        print(cannot open, arg)
    else:
        print(arg, has, len(f.readlines()), lines)
        f.close()

#   try 语句中判断文件是否可以打开,如果打开文件时正常的没有发生异常则执行 else 部分的语句,读取文件内容

 

try-finally 语句

try-finally 语句无论是否发生异常都将执行最后的代码。

技术图片

 

 

 

实例:

try:
    runoob()
except AssertionError as error:
    print(error)
else:
    try:
        with open(‘file.log‘) as file:
            read_data = file.read()
    except FileNotFoundError as fnf_error:
        print(fnf_error)
finally:
    print(‘这句话,无论异常是否发生都会执行。‘)

#finally 语句无论异常是否发生都会执行:

 

抛出异常

Python 使用 raise 语句抛出一个指定的异常。

技术图片

 

 

实例:

x = 10
if x > 5:
    raise Exception(x 不能大于 5。x 的值为: {}.format(x))

#如果 x 大于 5 就触发异常:

 

用户自定义异常

你可以通过创建一个新的异常类来拥有自己的异常。异常类继承自 Exception 类,可以直接继承,或者间接继承,

实例:

class MyError(Exception): def __init__(self, value):
            self.value = value
        def __str__(self):
            return repr(self.value)

try:
        raise MyError(2*2)
    except MyError as e:
        print(My exception occurred, value:, e.value)

 

raise MyError(oops!)

输出结果:

Traceback (most recent call last):
  File "<stdin>", line 1, in ?
__main__.MyError: oops!

 

 

 

 

 

 

 

Python 错误和异常

标签:color   return   int   语法   自定义   __init__   系统   内存   close   

原文地址:https://www.cnblogs.com/HyzH/p/12059142.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!