手记

【2023年】第57天 认识异常

一、什么是异常和异常处理

  • 异常就是错误。
  • 异常会导致程序崩溃并停止运行。
  • 能监控并捕获到异常,将异常部位的程序进行修理,使得程序继续正常运行。

异常的语法

try:
	<代码块1>try关键字检查并保护的业务代码
except: <异常的类型>:
	<代码块2> #代码块1出现错误后执行的代码块
# coding:utf-8
def upper(str_data):
    new_str = ''
    try:
        new_str = str_data.upper()
    except:
        print('程序出错了')
    return new_str


result = upper(1)
print("result: ", result)
  • 我们使用upper函数,它可以将字母变为大写,但是我们故意传入数字,数字是没有upper函数的,所以程序会报错,然后等它报错的时候我们用except接收并抛出它。
  • 可以看到最后一条打印语句仅仅打印出的是一个空字符串,他不会打印出我们定义的result变量。

二、捕获通用异常

无法确定是哪种异常的情况下使用的捕获方法

try:
	<代码块>
except Exception as e:
	<异常代码块>
def upper(str_data):
    new_str = ''
    try:
        new_str = str_data.upper()
    except Exception as e:
        print('程序出错了:{}'.format(e))
    return new_str


result = upper(1)
print("result: ", result)

运行结果:

三、捕获具体异常

  • 确定是哪种异常的情况下使用的捕获方法
  • except <具体的异常类型> as e
try:
	1/0
except ZeroDivisionError as e:
	print(e)
  • ZeroDivisionError是python内置的具体异常:0不能被整除。
def test():
    try:
        print('111')
        1/0
        print('hello')
    except ZeroDivisionError as e:
        print(e)


test()

运行结果:

四、捕获多种异常

捕获多种异常的写法1

try:
	print('try start')
	res = 1/0
	print('try finish')
except ZeroDivision Error as e:
	print(e)
except Exception as e:  # 可以有多个except
	print('This is a pubic except, bug is: %s' %e)
  • except代码块有多个的时候,当捕获到第一个后,不会继续往下捕获。

捕获异常的写法2

try:
	print('try start')
	res = 1/0
	print('try finish')
except(ZeroDivisionError, Exception) as e:
	print(e)
  • except代码后边的异常类型使用元组包裹起来,捕获到哪种抛出哪种。
def test1():
    try:
        print('hello')
        print(name)
    except (ZeroDivisionError, Exception) as e:
        print(e)
        print(type(e))
        print(dir(e))


test1()

运行结果:

0人推荐
随时随地看视频
慕课网APP