Python 错误和异常

常见错误

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!'

 

 

 

 

 

猜你喜欢

转载自www.cnblogs.com/HyzH/p/12059142.html