第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后面不指定异常名称,则表示捕获全部异常

相关推荐
wangchunyu1148 小时前
JAVA CompletableFuture异步编程实战
java·开发语言·python
变与不变8068 小时前
jQuery怎么使用
前端·javascript
神膘护体小月半9 小时前
flex 布局的 order 属性
前端·css
paopaokaka_luck9 小时前
流浪动物救助与收养系统(DeepSeek AI对话、 ECharts多维分析、救助流程衔接、领养与回访衔接、 捐赠确认与公示、志愿者协作)
java·前端·javascript·人工智能·mysql·echarts·推荐算法
Thomas.Sir9 小时前
第9课:SpringBoot4.x Web开发基础:WebMvc自动配置、静态资源、请求参数接收
java·spring boot
仰望.9 小时前
vue 表格组件 vxe-table 树表格懒加载支持拖拽排序的详细用法
前端·javascript·vue.js·vxe-table
前端 贾公子9 小时前
vite-plugin-uni-manifest 升级指南
前端
小码哥_常9 小时前
iPhone 用户传了张 HEIC,我的前端崩了
前端
程序 代码狂人9 小时前
切片表与分区表的区别(数据开发面试版)
java·大数据·开发语言·数据仓库·算法
小码哥_常9 小时前
你发的原图可能暴露你家地址——聊聊图片 EXIF 隐私
前端