异常处理

Posted qq752059037

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了异常处理相关的知识,希望对你有一定的参考价值。

语法错误:

  在程序执行前就规避掉,不应该留到程序中来进行异常处理

异常:

  在编译阶段没问题,在执行阶段才报错

 

异常出现后的现象:程序停止执行

 

多分支

l = [登陆,注册]
try:
    num = int(input(num : ))
    print(l[num - 1])
except ValueError:
    print(输入了错误的内容)
except IndexError:
    print(您输入的内容不在范围内)

print(其他内容)

 

也可以写到一起

l = [登陆,注册]
try:
    num = int(input(num : ))
    print(l[num - 1])      #即便是放在try语句中的内容,在遇到报错之后也会中断这段语句的执行
except (ValueError,IndexError): #写到一起 print(输入了错误的内容) print(其他内容)

 

 

万能异常 

except Exception
无论什么错误 它都能接收,一般放在最后面 不然把普通报错都接收了
try:
    l = []
    l[3]  # IndexError
    import Index  # ModuleNotFoundError
    open(aaaaaa) # FileNotFoundError
    1/0 # ZeroDivisionError
    dic = {}
    dic[k]  # KeyError
except Exception:
    print(异常啦)

 

 

as语法

  把报错原因赋值给一个变量

try:
    l = []
    l[3]  # IndexError
    import Index  # ModuleNotFoundError
    open(aaaaaa) # FileNotFoundError
    1/0 # ZeroDivisionError
    dic = {}
    dic[k]  # KeyError
except Exception as e:
    print(e) #list index out of range

 

 

多分支+万能异常

try:
    可能发生异常的代码
    三行
except 错误类型:
    处理的代码

try:
    可能发生异常的代码
    三行
except 错误类型1:
    处理的代码1
except 错误类型2:
    处理的代码2

try:
    可能发生异常的代码
    三行
except (错误类型1,错误类型2):
    处理的代码

try:
    可能发生异常的代码
    三行
except (错误类型1,错误类型2):
    处理的代码
except Exception as e:
    print(e)

 

 

异常处理中的其他逻辑

else

try:
     pass# 发邮件的逻辑
except ValueError:
    print(触发了一个name error)
else:
    pass
    汇报这段代码顺利的执行了 : 发短信通知,记录到文件中

 

finally

无论如何都要执行的函数 不会因为报错 或者return停止

一般用于收尾工作,打开了一个文件,占用了一个网络资源,打开了一个和数据库的链接 然后关闭

try:
    name = 123
except NameError:
    print(1111111)
finally:           #并不会因为报错就会停止
    print(执行我啦)
def func():
    try:
        f = open(content)
        return f.read()
    finally:   #并不会因为return就会停止
        f.close()
        print(closed)

func()

 

以上是关于异常处理的主要内容,如果未能解决你的问题,请参考以下文章

使用片段中的处理程序时出现非法状态异常

Java异常处理机制

java 反射代码片段

java.util.MissingResourceException: Can't find bundle for base name init, locale zh_CN问题的处理(代码片段

使用实体框架迁移时 SQL Server 连接抛出异常 - 添加代码片段

片段中的Android致命异常