python基础语法八-异常

书接上回:

python基础语法一-基本数据类型

python基础语法二-多维数据类型

python基础语法三-类

python基础语法四-数据可视化

python基础语法五-函数

python基础语法六-正则匹配

python基础语法七-openpyxl操作excel

1. 异常简介

(1)异常:遇到异常可以继续正常执行,不会终止

(2)python中的异常继承层次

      BaseException

           |

-------------------------------------------------------------------------------

|                                          |                 |                            |

KeyBoardInterrupt     Exception   SystemExit      GeneratorExit

                                           |

                           NameError/ValueError等

2. try…except结构

(1)格式:

try:

          可能引发异常的语句块

except[ BaseException [as e]]:  # e:异常对象

          异常处理语句块

2

import traceback

try:

    print('1')

    a=3/0

    print('2') # skip

except:

    print('error')

3. try 多个except结构

(1)格式:

try:

           可能引发异常的语句块

except Exception1:

           异常1处理语句块

except Exception2:

           异常2处理语句块

       ...

except BaseException [as e]:

           异常处理语句块

3

try:

     a = float(input('please input the dividend:'))

     b = float(input('please input the divisor:'))

     c = a/b

     print('%d / %d = %d' % (a, b, c))

except ZeroDivisionError:

     print('divisor shouldn\'t be zero')

except ValueError:

     print('string shouldn\'t be input')

 except BaseException as e:

     print(e)

4. try...except(可以多个)...else结构

(1)try里是可能有异常的语句块,如果有异常则进入except,没有异常则进入else

4

 try:

     a = float(input('please input the dividend:'))

     b = float(input('please input the divisor:'))

     c = a/b

 except ZeroDivisionError:

     print('divisor shouldn\'t be zero')

 except ValueError:

     print('string shouldn\'t be input')

 except BaseException as e:

     print(e)

 else:

     print('%d / %d = %d' % (a, b, c))

5. try...except...finally结构

(1)说明:try里是可能有异常的语句块,无论是否有异常,一定会进入finally。

(2)典型应用:处理文件时,最后一定要关闭该文件

5

try:

     a = float(input('please input the dividend:'))

     b = float(input('please input the divisor:'))

     c = a/b

 except ZeroDivisionError:

     print('divisor shouldn\'t be zero')

 except ValueError:

     print('string shouldn\'t be input')

 except BaseException as e:

     print(e)

 else:

     print('%d / %d = %d' % (a, b, c))

 finally:

     print('end !')

6. 常见异常

(1)ZeroDivisionError :除0异常

(2)ValueError :字符串不能当做数字做运算

(2)NameError :访问一个没有声明的变量

(3)SyntaxError : 语法异常

(4)IndexError : 数组越界

(5)TypeError : 类型异常, 例如数字和字符串不能相加

(6)KeyError : 字典没有这个key

(7)AttributeError :对象不存在这个属性

7. traceback

(1)作用:打印详细的错误信息,并且可以把错误信息存储到日志文件中

7

try:

     a = 1/0

 except BaseException as e:

     with open(r"C:\Users\qinglan.he\Desktop\traceback.txt","a") as f:

         traceback.print_exc(file=f)

8. 自定义异常

8

class MyError(Exception): # 继承Exception

    def __init__(self, age):

        Exception.__init__(self)

        self.age = age

    def print_error(self):

        print('age arror! age shouldn\'t be ', self.age)

if __name__ == '__main__':

    age = 200

    if age > 150:

        my_error = MyError(age)

        my_error.print_error()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值