python(16)异常 Exception

1、语法错误及异常 exception

语法错误 例如:

number = 100
def func():
    global number   #添加报错解决
    number += 1  #报红色波浪线

 

2、异常: 程序运行的时候报出来的:xxxError

例如:除数不能为0异常

def devide(a, b):
    return a / b
devide(1, 0)  #ZeroDivisionError: division by zero  除数为0

 

3、异常处理的格式

try:

    可能出现异常的代码

except:

    如果有异常执行的代码

else:

    没有出现异常执行的代码

[finally:

    无论是否存在异常,都会被执行的代码]

 

分为4中情况:

情况1:

try:

    有可能会产生多种异常

except 异常类型1:

    print(...)

except 异常类型2:

    print(...)

except Exception:  Exception需要放到最后一位

    print(...)

如果是多个Except,异常类型的顺序需要注意,最大的Exception放到最下方

 

情况2:

try:

    有可能会产生多种异常

except Exception as err:

    print(err)  --->err的内容是错误的原因

 

情况3:

try:

    pass

except Exception as err:

    print(err)

else:       --->没有异常才会执行的代码块

    print(...)

 

情况4:

文件操作  stream = open(filename, mode)  stream.read()  stream.close()

数据库操作 close()

无论是否有错误,都释放资源

try:

    pass

except:

    pass

finally:  --->无论是否报出异常,均会执行

    pass

 

有finally在,执行完finally中代码后才return

 

例子:

def cus_devision():
    try:
        n1 = int(input("第一个数字:"))
        n2 = int(input("第二个数字:"))
        #加法
        result = n1 / n2
        print("{} / {} = {}".format(n1, n2, result))

        list1 = []
        list1.pop()    --->pop from empty list --->从空列表中删除内容

    except Exception as err:
        print(err)
cus_devision()
def read_stream():
    stream = None
    try:
        stream = open(r'D:\JY\test5\aaaa.txt', 'r')
        container = stream.read()
        print(container)
    except Exception as err:
        print(err)
    finally:
        print("---finally---")
        if stream:
            stream.close()
read_stream()

 

4、异常抛出 raise

例:注册  用户名必须6位

def register():
    username = input("请输入用户名:")
    if len(username) < 6:
        #抛出异常
        raise Exception('用户名必须大于6位')
    else:
        print("用户名为:", username)
    
try:
    register()
except Exception as err:
    print(err)
    print("注册失败!")
else:
    print("注册成功!")

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中的异常处理机制是通过try-except语句实现的。try语句中的代码块被称为“尝试”(try)代码块,我们希望在这里执行一些可能引起异常的操作。如果try语句中的代码块执行过程中发生了异常,那么程序会立即跳转到相应的except语句中进行处理。如果try语句中的代码块执行过程中没有发生异常,那么程序会跳过所有的except语句,继续执行其余的代码。 以下是一个简单的try-except语句的例子: ``` try: # 尝试执行一些可能引起异常的操作 x = 10 / 0 except ZeroDivisionError: # 如果发生了ZeroDivisionError异常,就执行这里的代码 print("除数不能为0") ``` 在上面的例子中,我们尝试对10进行除以0的操作,显然这样的操作会引起ZeroDivisionError异常。当程序执行到这一行代码时,程序会跳转到except语句中进行处理,并输出一条“除数不能为0”的提示信息。 在实际应用中,我们可以在except语句中处理不同类型的异常,并采取不同的处理措施。例如: ``` try: # 尝试执行一些可能引起异常的操作 x = int(input("请输入一个整数:")) y = 10 / x except ZeroDivisionError: # 如果发生了ZeroDivisionError异常,就执行这里的代码 print("除数不能为0") except ValueError: # 如果发生了ValueError异常,就执行这里的代码 print("输入的不是整数") except: # 如果发生了其他类型的异常,就执行这里的代码 print("发生了未知错误") else: # 如果try语句中的代码块执行成功,就执行这里的代码 print("计算结果为:", y) finally: # 无论try语句中的代码块是否执行成功,都会执行这里的代码 print("程序执行结束") ``` 在上面的例子中,我们除了处理ZeroDivisionError和ValueError异常之外,还使用了一个通用的except语句来处理其他类型的异常。在try语句中,我们还使用了else语句来处理try语句中的代码块执行成功的情况,以及finally语句来处理无论try语句中的代码块是否执行成功都需要执行的代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值