[oeasy]python0139_尝试捕获异常_ try_except_traceback
- 变量相加
- 整型数字变量可以相加
- 字符串变量也可以拼接
- 但是
- 字符串 和 整型数字
- 整型数字 和 字符串
- 不能相加
- 怎么办?
- 转格式
- int("1")
- str(2)
- 可是
- 如果输入的苹果数量是
- 字符串"abc"
- int("abc")会发生什么??
- 虽然我有了心理准备
- 但是 python 显然还没有准备好

- 要让 python 知道
- 什么时候可能会出错
- python3 的意思是
- 不知道怎么把 abc 转化为十进制数
- 不但 python3 没有办法转化
- 我也没有思路

- 有的时候数字中确实可以有 abc 的
- 比如 0xa 这种形式
- 这 0xabc 是可以转化为数字的
- 而 abc 是不能转化的
- 如何进行区分呢
- 尝试转化的工作
- 出现在倒数第二行
- total = int(a) + int(b)
- 需要做的
- 是试着 运行这一行
- 既然 给了用户输入的 权利
- 就要处理 用户输入的错误
- 如果遇到了 不能转化的情况
- 就要处理
- 给用户 一个 明确的报错
- 怎么才能让 python3 试着运行呢?
- 搜索一下 python3 + try

- try 就是 试着来
- 把需要试着来的代码部分放到 try 里面

- 试着 成功了
- 就继续运行 try里面的代码
- 直到完成 try中所有的代码
- 试着 失败了
- 就跳转到except部分 执行
- 这就是
- 异常的处理
- 下面的源代码
- 可以直接复制
- 系统会将两个反斜杠\\
- 转义成一个反斜杠\
- 注意
- 冒号
- 是英文半角的
- 要紧跟着 try、except
- 缩进
- 待尝试的内容需要缩进 4 个字符
- total = int(a) + int(b)
- 所有需要try的内容都要
- 缩进
- 就像while True中需要循环的循环体
- 需要缩进一样
- 缩进距离不多不少
- 4个就很合适
- 运行失败了
- 成功报了错

- 原来想的是 试着执行这句
- total = int(a) + int(b)
- 可是这句 里面
- 不但进行 类型转化
- 还声明了 一个变量 total
- 这个total
- 由于int("a") 会出现错误
- 根本没有被声明
- 而且 后面还要被引用
- 后面引用不到
- 所以报错了
- 没 try成功
- 怎么办?
- 都放 try 里面
- 试试行不行

- 这次终于成功地报错了!
- 或者说我接管了相关的报错信息
- 对于这类错有了自己的处理
- 这就是捕获了异常
- 并且处理了异常
- 红颜色的 error 好扎眼
- 我把他瞒下来
- 不报错可以么?

- <font style="color:red;font-size:48px;">这不行!!!</font>
- 异常错误不处理不行
- 要明确得处理
- 要明确的报错
- 知道哪里错了
- 才好修改
- 如果假装没犯错
- 就会完全没有处理线索
- 程序大了绝对让人彻底崩溃
- 错误不应被悄悄传递
- 除非你确定需要这样做

- 精准地捕获异常
- 不写 except:pass 风格的代码
- 那什么是 except:pass 风格的代码呢?
- 就是 那种知错不报错的方式
- 虽然 except接收到了错误
- 但是 轻轻飘过pass

- 上面这是错的!
- 这是最要命的
- 让人没有追踪trace的痕迹
- 无法调试debug!
- 无语问苍天!
- 不但要有自己的报错
- 还要保留系统的报错
- 有可能吗?

- 最终结果

- 可以让报错详细一些吗?
- 比如文件、行号

- import traceback
- traceback.print_exc()

- 这次学习了
- try
- except
- 注意要点
- 半角冒号
- 缩进
- 错误信息输出
- 有错就处理
- 不要忽略、隐瞒
- 否则找不到出错位置
- 还可以用traceback把
- 系统报错信息原样输出
- 但是代码量好多啊
- 10多 行了
- 可以把他输入部分和输出部分么?
- 我们下次再说!
[oeasy]python0139_尝试捕获异常_ try_except_traceback的更多相关文章
- PythonAdvanced
PythonAdvanced function 函数 (要多使用函数,方便,少变量,好改错) 函数是可以重复执行的语句块,可以重复使用 作用: 1.用于封装语句块,提高代码的重用性 2.定义用户级别的 ...
- python-模块,异常,环境管理器
模块 Module 什么是模块: 1.模块是一个包含有一系列数据,函数,类等组成的程序组 2.模块是一个文件,模块文件名通常以.py结尾 作用: 1.让一些相关数据,函数,类等有逻辑的组织在一起,使逻 ...
- Java-50个关键字
关键字 (50个,包含2个保留字)和特殊值(3个)一.基本数据类型相关关键字(8个) 1.关键字介绍(1)byte:单字节类型(2)short:短整型(3)int:整型(4)long:长整型(5)ch ...
- C++学习39 异常处理入门(try和catch)
编译器能够保证代码的语法是正确的,但是对逻辑错误和运行时错误却无能为力,例如除数为 0.内存分配失败.数组越界等.这些错误如果放任不管,系统就会执行默认的操作,终止程序运行,也就是我们常说的程序崩溃( ...
- android小细节
1.资源包图片尽量控制在50k以内,否则可能读取失败 2.资源图片建议使用png格式,此格式在android系统上支持最好.对于jpeg和gif格式的图片,在android4.0以后版本,通过系统自缩 ...
- Sublime Text 2 - There are no packages available for installation
解决Sublime Text 2 package Control 无法安装插件的问题 错误提示 here are no packages available for installation 问题解决 ...
- 异常处理&RandomAccessFile&节奏感
异常处理 异常处理方面的知识,下面是学习中记的笔记: try尝试捕获异常 catch对捕获的异常进行处理 多个catch要注意的问题: 一.顺序问题,先小后大,也就是先子类后父类.因为当异常出现的时候 ...
- Swift5 语言指南(二十四) 泛型
通用代码使您能够根据您定义的要求编写可以使用任何类型的灵活,可重用的函数和类型.您可以编写避免重复的代码,并以清晰,抽象的方式表达其意图. 泛型是Swift最强大的功能之一,Swift标准库的大部分内 ...
- Java 如何抛出异常、自定义异常、手动或主动抛出异常
public static void main(String[] args) { try { throw new Exception("抛出异常"); } catch (Excep ...
- 1.6 C++异常处理(try和catch)
参考: http://www.weixueyuan.net/view/6332.html 注意: throw 抛出异常,catch 捕获异常, try 尝试捕获异常. 在程序设计过程中,我们总是希 ...
随机推荐
- 如此丝滑的API设计,用起来真香
分享是最有效的学习方式. 博客:https://blog.ktdaddy.com/ 故事 工位上,小猫一边撸着代码,一边吐槽着前人设计的接口. 如下: "我艹,货架模型明明和商品SKU模型是 ...
- 推荐一款模拟浏览器自动化操作神器!Mechanize
大家好,我是狂师! 今天给大家推荐一款用于模拟浏览器行为以进行网页自动化操作Python库:Mechanize. 1.介绍 Mechanize是Python中的一个库,它被设计用来自动化网页浏览和数据 ...
- elementui table tree懒加载只能执行一次的解决办法
绑定 table的:key为随机值,在每次查询更新table时,更改key,就能刷新 table tree 懒加载只能第一次有效的问题, 本来那个懒加载只能执行一次,即使重新绑定了数据列表,再展开,也 ...
- nginx重载流程nginx请求处理流程nginx单进程和多进程
nginx重载流程 首先nginx会向master进程发送HUP信号[reload命令] master进程校验配置语法是否正确 master进程打开新的监听端口 master进程用心配置启动新的wor ...
- Linu部署服务启停脚本
Linux项目部署启停 WEB应用(WAR包)部署 实际开发中,难免遇见新业务项目构建.项目重构(重新优化整个项目的架构,相当于重写),也可能是项目拆分多个模块,也可能部分拆分,但项目的模块化分离,就 ...
- SCOI 回旋退役记
02.21 day -2 开始写了,期望这不是真的退役记吧.但是不是的概率好小-- 这几天一直考试,怎么说呢,到差不差的,也就那个样子. 归根结底,菜是原罪,和那些大佬相比我真的很很很菜啊.当时看 c ...
- kettle从入门到精通 第五十七课 ETL之kettle调用存储过程
1.之前有个同学说他使用kettle执行一坨sql语句时,kettle直接卡死掉了.我给出的建议是使用存储过程,果不其然使用存储过程顺利解决问题. 今天我们一起来学习下kettle如何调用存储过程,这 ...
- ETL工具-nifi干货系列 第十六讲 nifi Process Group实战教程,一文轻松搞定
1.目前nifi系列已经更新了10多篇教程了,跟着教程走的同学应该已经对nifi有了初步的解,但是我相信同学们应该有一个疑问:nifi设计好的数据流列表在哪里?如何同时运行多个数据流?如启停单个数据流 ...
- Scrapy框架(九)--分布式爬虫
分布式爬虫 - 概念:我们需要搭建一个分布式的机群,让其对一组资源进行分布联合爬取. - 作用:提升爬取数据的效率 - 如何实现分布式? - 安装一个scrapy-redis的组件 爬取到的数据自动存 ...
- SD-WAN中二层组网与三层组网的区别
前言 随着企业网络需求的不断增长和变化,SD-WAN作为一种现代网络技术,为企业提供了更灵活.高效的网络解决方案.在SD-WAN中,二层组网和三层组网是两种常见的部署模型,它们有着各自的特点和适用场景 ...