python学习-07【错误和异常处理】

1、错误处理

语法错误( SyntaxError )
  • for 语句后面没有加 :(冒号)
  • 语句之间的缩进错误
  • 没有加 ()
  • ……
运行时的错误( Traceback 开头 )
  • ZeroDivisionError:将 0 作为除数
  • TypeError:定义两个不同类型的变量,然后使用 + 进行计算
  • NameError:输出了还没有定义的变量
  • IndexError:在使用序列(列表、元组等),指定的索引超出了列表的索引范围
  • KeyError:指定不存在的键访问字典
  • ……

2、异常处理语句

try…except 语句

将可能产生异常的代码放在 try 语句块中,将处理异常的代码放在 except 语句块中。
当执行程序时,如果 try 中的代码出现错误,就会执行 except 中的代码。

try:
    block1
except [ExceptionName]:
    block2
  • ExceptionName:表示要捕获的异常,为可选参数。(如果不指定异常名称,则表示捕获所有异常)
while True:
    try:
        num = int(input())
        result = 100 / num
        print(resultl)
        exit()
    except ZeroDivsionError:
        print("error!!")
    except ValueError:
        print('no num')
    except Exception as e:	# 为 Exception 异常其设置别名
        print(e)
    except (ZeroDivisionError, ValueError) as e:	# 设置多个异常的共同别名
        print(e)
try…except…else 语句

如果 try 语句中没有出现任何异常情况,就会执行 else 语句块中的代码

try…except…finally 语句

在进行异常处理时,完整的异常处理应该包括 finally 语句。
通常情况下,不论程序中是否存在异常,都会执行 finally 中的代码

try语句块
是否异常
except语句块
finally语句块
else语句块
raise 语句

自己抛出异常

def num_cal():
    book = int(input())
    student = int(input())
    if book < student:
        raise ValueError('aaa')
        
try:
    num_cal()
except ValueError as e:
    print(e)	# 输出 raise 语句中的内容

3、程序调试

Python 提供了 assert(断言)语句调试程序,可以在条件不满足程序运行的情况下直接返回错误

assert expreession [, arguments]
  • expression:条件表达式。( 判断程序 True / False )
  • argument:可选参数,用于对条件进行描述

等价于:

if not expression:
    raise AssertionError(arguments)

e.g.:

def num_cal():
    book = int(input())
    student = int(input())
    assert book >= student, 'aaa'	# 异常则抛出 AssertionError 错误
        
nnum_cal()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值