码迷,mamicode.com
首页 > 编程语言 > 详细

15.python异常处理

时间:2018-04-27 23:59:22      阅读:55      评论:0      收藏:0      [点我收藏+]

标签:怎样   无法   pac   int()   sdi   直接   bsp   col   不同   

异常:程序运行时报错

关于异常处理:

  程序员编订特定编码,用来捕捉异常,这段代码与与程序逻辑没有关系,只和异常处理相关。捕捉成功则进入另一处理分支,执行为其定制的逻辑,使程序不会发生崩溃

1.使用if判断式:

num1=input(>>: ) #输入一个字符串试试
if num1.isdigit():
    int(num1) #我们的正统程序放到了这里,其余的都属于异常处理范畴
elif num1.isspace():
    print(输入的是空格,就执行我这里的逻辑)
elif len(num1) == 0:
    print(输入的是空,就执行我这里的逻辑)
else:
    print(其他情情况,执行我这里的逻辑)

总结:  

  if判断式的异常处理只能针对某一段代码,对于不同代码段的相同类型还需要重复if进行处理

  频繁使用if会导致程序本身可读性变差

  if是能解决异常的只是存在上述问题

2.选用py特定语法:

1.基本语法

try:
     被检测的代码块
except 异常类型:
     try中一旦检测到异常,就执行这个位置的逻辑

2.异常只能处理指定的异常情况,如果非指定异常则无法处理

# 未捕获到异常,程序直接报错
s1 = hello
try:
    int(s1)
except IndexError as e:
    print(e)

3.万能异常:Exception可以捕获任意异常

s1 = hello
try:
    int(s1)
except Exception as e:
    print(e)
---invalid literal for int() with base 10: hello
# 它不会飘红,但是也会显示相关错误

 如果相对任何异常都统一丢弃,那么一个Exception就足够了

如果想要对不同的异常定制不同的处理逻辑,则需要多分支处理

s1 = hello
try:
    float(s1)
except IndexError as e:
    print(e)
except KeyError as e:
    print(e)
except ValueError as e:
    print(e)

4.其他组织机构

s1 = hello
try:
    int(s1)
except IndexError as e:
    print(e)
except KeyError as e:
    print(e)
except ValueError as e:
    print(e)
#except Exception as e:
#    print(e)
else:
    print(try内代码块没有异常则执行我)
finally:
    print(无论异常与否,都会执行该模块,通常是进行清理工作)    # 这步不管怎样最后都会执行

5.主动触发异常

try:
    raise TypeError(类型错误)
except Exception as e:
    print(e)

 

15.python异常处理

标签:怎样   无法   pac   int()   sdi   直接   bsp   col   不同   

原文地址:https://www.cnblogs.com/LearningOnline/p/8964273.html

(0)
(0)
   
举报
评论 一句话评论(0
0条  
登录后才能评论!
© 2014 mamicode.com 版权所有 京ICP备13008772号-2
迷上了代码!