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

相关推荐
霸道流氓气质几秒前
Maven 批处理脚本与 Qoder 配置使用指南
java·maven
SilentSamsara1 分钟前
HTTP 客户端实战:httpx/重试/限速/连接池/中间件设计
开发语言·网络·python·http·青少年编程·中间件·httpx
架构源启2 分钟前
Spring AI进阶系列(14)- 2026 可观测性最佳实践:从链路追踪到企业级 AI 治理落地
java·人工智能·spring
神奇的代码在哪里3 分钟前
【单机离线版】大学考试题库复习工具:前端离线Excel解析 + localStorage持久化 + Playwright
前端·html·ai编程·题库复习·刷题软件·大学考试
码上有光7 分钟前
c++: 继承(下)
android·java·c++·多继承·菱形继承·虚继承
JAVA9657 分钟前
JAVA面试-并发篇 02-synchronized 锁可以重入吗
java·面试
daols888 分钟前
vxe-table 实现数据分组统计与表尾合计
前端·javascript·vue.js·vxe-table
向日的葵00610 分钟前
Vue 函数定义、事件绑定与列表渲染精讲
前端·javascript·vue.js
AI玫瑰助手11 分钟前
Python函数:可变参数(星号args与双星号kwargs)详解
android·开发语言·python
RemainderTime12 分钟前
Spring Boot脚手架集成Sa-Token实现生产级RBAC权限管理
java·spring boot·后端·系统架构