第7章 1 异常处理

bug的由来及分类 p81

字符串形式表示的数字之间也可以比较大小

python 复制代码
import re
age=input('年龄:')
if age>'18':
    print(age)

列表的append操作每次只能添加一个元素:

python 复制代码
lst=[]
lst.append('A')
lst.append('B')
# lst.append('A','B') 错误

python中的异常处理机制 p82

try...except的语法结构:

python 复制代码
try:
	可能会抛出异常的代码
except 异常类型:
	异常处理代码(报错后执行的代码)

代码实例:

python 复制代码
try:
    num1=int(input('请输入一个整数:'))
    num2=int(input('请输入另一个整数:'))
    result=num1/num2
    print('结果:{0:.2f}'.format())
except ZeroDivisionError:
    print('除数为0')

'''
第2个输入为0的时候,会走到except异常分支。
但若输入的不是整数,包含了其它字符,还是会运行报错。
解决方法见下一种语法结构。

若except后面不指定异常名称,则表示捕获全部异常

try...except...except的语法结构:

python 复制代码
try:
	可能抛出异常的代码
except 异常类型A:
	异常处理代码(报错后执行的代码)
except 异常类型B:
	异常处理代码(报错后执行的代码)

代码实例:

python 复制代码
try:
    num1 = int(input('请输入一个整数:'))
    num2 = int(input('请输入另一个整数:'))
    result = num1 / num2
    print('结果:{0:.2f}'.format(result))
except ZeroDivisionError:
    print('除数不能为0')
except ValueError:
    print('不能将字符串转为整数')
except BaseException:
    print('未知异常')

try...except...else的语法结构为:

python 复制代码
try:
    可能会抛出异常的代码
except 异常类型:
    异常处理代码(报错后执行的代码)
else:
    没有抛异常要执行的代码

代码实例:

python 复制代码
try:
    num1 = int(input('请输入一个整数:'))
    num2 = int(input('请输入另一个整数:'))
    result = num1 / num2
#    print('结果:{0:.2f}'.format(result))
except ZeroDivisionError:
    print('除数不能为0')
except ValueError:
    print('不能将字符串转为整数')
except BaseException:
    print('未知异常')
else:
    print('结果:{0:.2f}'.format(result)) # 把第五航执行成功打印的语句挪到此处,也是可以的

try...except...else...finally的语法结构:

python 复制代码
try:
    可能会抛出异常的代码
except 异常类型:
    异常处理代码(报错后执行的代码)
else:
    没有抛异常要执行的代码
finally:
    无论是否产生异常都要执行的代码

raise关键字的使用 p83

raise:抛出一个异常,从而提醒程序出现了异常情况,程序能够正确的处理这些异常情况

语法结构:

python 复制代码
raise Exception类型(异常描述信息)

代码实例:

python 复制代码
try:
    gender=input('请输入您的性别:')
    if gender!='男' and gender!='女':
        raise Exception('性别只能是男或女')  # 此处抛出异常,然后被第七行捕获
    else:
        print('您的性别是:{0}'.format(gender))
except Exception as e:
    print(e)

Python中常见的异常类型 p84

异常类型 描述说明
ZeroDivisionError 当除数为0时,引发的异常
IndexError 索引超出范围所引发的异常
KeyError 字典取值时key不存在的异常
NameError 使用一个没有声明的变量时引发的异常
SyntaxError Python中的语法错误
ValueError 传入的值错误
AttributeError 属性或方法不存在的异常
TypeError 类型不合适引发的异常
IndentationError 不正确的缩进引发的异常

代码实例:

python 复制代码
# ZeroDivisionError
#print(10/0)

# IndexError
#lst=[10,20]
#print(lst[2])

# KeyError
#d={'a':1}
#print(d['b'])

# NameError
#print(a)

# SyntaxError
#print('a)

# ValueError
# int('a')

# AttributeError
#i=10
#print(i.name) 整数没有这个属性

# TypeError
#print('hello'+123)

# IndentationError
    print('不在if里面就不能缩进')

PyCharm的程序调试 p85

1、设置断点:点击行号,设置断点到对应位置处

2、进入代码调试窗口:a.点击右上角小虫子 b.shift+f9 c.右键+debug main

下面会生成四个窗口:变量查看窗口、调试控制窗口、线程控制窗口、程序控制窗口

本章总结及章节选择题 p86

若except后面不指定异常名称,则表示捕获全部异常

相关推荐
呆萌很8 分钟前
字典推导式练习题
python
多则惑少则明30 分钟前
Vue开发系列——自定义组件开发
前端·javascript·vue.js
用户2506949216137 分钟前
next框架打包.next文件夹部署
前端
闲人编程38 分钟前
Python在云计算中的应用:AWS Lambda函数实战
服务器·python·云计算·aws·lambda·毕设·codecapsule
程序猿小蒜40 分钟前
基于springboot的校园社团信息管理系统开发与设计
java·前端·spring boot·后端·spring
一叶难遮天40 分钟前
开启RN之旅——前端基础
前端·javascript·promise·js基础·es6/ts·npm/nrm
申阳41 分钟前
Day 4:02. 基于Nuxt开发博客项目-整合 Inspira UI
前端·后端·程序员
兔兔爱学习兔兔爱学习42 分钟前
Spring Al学习9:模型上下文协议(MCP)
java·学习·spring
m0_7482480243 分钟前
Spring MVC中@RequestMapping注解的全面解析
java·spring·mvc
Mos_x44 分钟前
28.<Spring博客系统⑤(部署的整个过程
java·后端