博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
异常处理
阅读量:4681 次
发布时间:2019-06-09

本文共 2584 字,大约阅读时间需要 8 分钟。

1. 什么是异常处理     异常是错误发生的信号,一旦程序出错就会产生一个异常,如果该异常     没有被应用程序处理,那么该异常就会抛出来,程序的执行也随之终止     异常包含三个部分:         1. traceback异常的追踪信息         2. 异常的类型         3. 异常的信息     错误分为两大类:         1. 语法上的错误:在程序运行前就应该立即修正         2. 逻辑上的错误 2. 为何要异常处理     避免程序因为异常而崩溃,所以在应用程序中应该对异常进行处理,从而增强程序的健壮性 3. 如何异常处理 try:     代码1     代码2     代码3     ...... except NameError:     当抛出的异常是NameError时执行的子代码块 except ....:     pass except ...:     pass else:     pass finally:     pass
else必须放到后面,else的子代码块会在被检测的代码没有异常的情况下执行
finally无论被检测的代码有没有异常都会执行
=============================================================
try:      print('=====>1')      print('=====>2')      print('=====>3')      l=[1,2,3,4,5]       #IndexError      l[10]      print('=====>4')      aaa                 #nameError      print('=====>5')      '1'>1               #TypeError      print('=====>6')  except IndexError:      print('IndexError')  except TypeError:      print('TypeError')  except Exception:      print('Exception')  else:      print('没毛病(没有异常才能执行)')  finally:      print('有毛病也执行(有没有异常都执行)')  print('end')
万能异常类型Exception:可以匹配任意类型的异常
============================================================== 常见异常类型:
print('dadada'    #SyntaxError: unexpected EOF while parsing  l=[1,2,3,4,5]     #IndexError: list index out of range  l[10]  xxx               #NameError: name 'xxx' is not defined  l={'a':1,'b':2}   #KeyError: 'c'  l['c']  'a'>1             #TypeError: '>' not supported between instances of 'str' and 'int'  for i in 10       #SyntaxError: invalid syntax  1/0               #ZeroDivisionError: division by zero ====================================================================== 主动触发异常:
class People:      def __init__(self,name,age):          self.__name=name          self.__age=age      def tell_info(self):          print(self.__name,self.__age)      def set(self,name,age):          if not isinstance(name,str):              raise TypeError('name必须是str类型')          if not isinstance(age,int):              raise TypeError('age必须是int类型')          self.__name=name          self.__age=age  peo1=People('qqq',10)  # print(peo1.__dict__)  # peo1.tell_info()
================================================================== 了解:
自定义异常类型(了解)  class MyException(BaseException):      def __init__(self,msg):          super().__init__()          self.msg=msg      def __str__(self):          return '<%s>' %self.msg  raise MyException('我自定义的异常')
断言(了解) print('上半部分,生产数据') l=[1,2,3,4] # if len(l) != 5: #     raise TypeError('列表的长度必须为5') assert len(l) == 5 print('下半部分,处理数据')
 

转载于:https://www.cnblogs.com/zhangpang/p/9544809.html

你可能感兴趣的文章
SQL函数学习(十六):STUFF()函数
查看>>
Apache Hadoop 和Hadoop生态圈
查看>>
Ctrl+Enter 选中文本提交
查看>>
android WIFI
查看>>
常用的匹配正则表达式和实例
查看>>
小组成员及其git链接
查看>>
SQL case when else
查看>>
MVc Identity登陆锁定
查看>>
cdn连接失败是什么意思_关于CDN的原理、术语和应用场景那些事
查看>>
ultraedit26 运行的是试用模式_免费试用U盘数据恢复工具 – 轻松找回U盘丢失的各种数据!...
查看>>
plsql 查询存储过程死锁语句_插入语句/存储过程死锁
查看>>
bootstrap table 收缩_bootstrap-table方法之:expandRow-collapseRow,展开或关闭当前行数据...
查看>>
jsp跳转到本身页面_五种JSP页面跳转方法详解
查看>>
mysql r_mysql:’r’是什么意思?
查看>>
无法加载 mysql 扩展_请检查您的 php 配置. - 文档_无法载入 mysql 扩展 请检查 PHP 配置...
查看>>
非空 默认 男 mysql_MySQL进阶13--常见六大约束: 非空/默认/主键/唯一约束/检查约束/外键约束--表级约束 / 列级约束...
查看>>
mysql错误修改数据_mysql数据修改问题
查看>>
navicat忘记mysql密码_navicat连接My SQL时忘记root密码处理方法
查看>>
mysql 左连接 左外连接吗_什么是左外连接?左外连接在工作表查询中的应用
查看>>
python sum函数导入list_python sum函数iterable参数为二维list,start参数为“[]”该如何理解...
查看>>