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

相关推荐
Aiclin2 分钟前
大模型基础-应用小记【转载】
python
callJJ7 分钟前
JVM 类加载机制详解——从 .class 文件到对象诞生的完整旅程
java·jvm·类加载·双亲委派模型
小徐_233311 分钟前
uni-app 组件库 Wot UI 2.0 发布了,我们带来了这些改变!
前端·微信小程序·uni-app
2301_8166602112 分钟前
CSS实现盒子倒角不规则效果_利用border-radius多个值
jvm·数据库·python
2201_7610405914 分钟前
CSS如何根据父级容器宽度调整子项_利用容器查询container选择器css
jvm·数据库·python
❀͜͡傀儡师16 分钟前
Claude Code 官方弃用 npm 安装方式:原因分析与完整迁移指南
前端·npm·node.js·claude code
ZPC821020 分钟前
ROS2 快过UDP的方法
python·算法·机器人
weixin_4585801220 分钟前
如何在 Python Fabric 中正确执行 EdgeOS 配置命令
jvm·数据库·python
Kiling_070421 分钟前
Java Math类核心用法全解析
java·开发语言
踏着七彩祥云的小丑21 分钟前
开发中用到的注解
java