Python中 try-expect finally raise的用法

try 和 expect 用于异常的检查。

当程序运行时,遇到异常会停止导致后边的程序运行不了;

a = 0
b = 5
print(b / a)
print('lalalalallalalallala')
print('hahahahahahhahahahha')

结果

Traceback (most recent call last):
  File "D:/PycharmProjects/untitled1/text.1.py", line 3, in <module>
    print(b / a)
ZeroDivisionError: division by zero

他们就是用于解决这种状况。

try:
    a = 0
    b = 5
    print(b / a)
except Exception as ex_results:
    print(ex_results)
    print('lalalalallalalallala')
    print('hahahahahahhahahahha')

结果

division by zero
lalalalallalalallala
hahahahahahhahahahha

其中Exception 是所有错误类型的一大类;用re_results来存储错误类型。
在try和except中间写可能错误的代码,except后面写中间代码错误类型。

try…expect…finally

如果有程序必须执行那么就使用到了finally,比如文件关闭,释放锁,把数据库连接返还给连接池等。

raise

用他来主动抛出异常,一是可以抛出在语法上不被认为是异常但在功能上我们认为是异常的情况(如用户名密码错误等),二是可以自定义自己的异常报错语句更方便异常的定位和排查。
这里我找了一个样例:

# 自定义的异常类都要继承Exception类,至少是间接继承Exception类
class PasswordException(Exception):
    # 在init方法中定义一个password变量
    def __init__(self,password):
        self.password = password

    def __str__(self):
        return repr(self.password)

def testRaise():
    # 主动抛出异常示例
    try:
        username = input("please enter your username:")
        # 输入的用户名不是admin就抛出异常Exception
        if username != "admin":
            raise Exception(f"maybe your privilege is not enough: {username}")
    # 可以看到打印的是我们自定义的异常语句
    except Exception as e:
        print(f"{e}")

    # 主动抛出自定义异常示例
    try:
        password = input("please enter your password:")
        # 输入的密码不是123456就抛出自定的的PasswordException异常
        if password != "123456":
            raise PasswordException(password)
    # 我们自定义的异常有password变量,所以我们可以直接选择把变量打印出来
    except PasswordException as e:
        print(f"PasswordException: {e.password}")

if __name__ == "__main__":
    testRaise()
发布了7 篇原创文章 · 获赞 0 · 访问量 111
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 深蓝海洋 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览