name
结果为:
Traceback (most recent call last): #错误的追溯
File "C:/Users/Mi/PycharmProjects/untitled/Practice/练习.py", line 1, in <module> #xx文件的xx行
name #xx句
NameError: name 'name' is not defined
#错误类型 具体的错误内容

以上是使用PyCharm执行代码时会报错的一个例子.

 def func1():name

 def func2():
func1() def main():
func2() main()
#在嵌套调用的过程中,内部的代码出了问题,外部所有的调用的地方都成为报错追溯信息的一部分
 结果为:
Traceback (most recent call last):
File "C:/Users/Mi/PycharmProjects/untitled/Practice/练习.py", line 9, in <module>
main()
File "C:/Users/Mi/PycharmProjects/untitled/Practice/练习.py", line 7, in main
func2()
File "C:/Users/Mi/PycharmProjects/untitled/Practice/练习.py", line 4, in func2
func1()
File "C:/Users/Mi/PycharmProjects/untitled/Practice/练习.py", line 1, in func1 #多行异常的时候 看最后一行的内容
def func1():name
NameError: name 'name' is not defined

以上是多行报错的一个例子.

=============================================================================================================

异常处理

单分支

 l = ['login','register']
for num,i in enumerate(l,1):
print(num,i) try: #try和except之间是被异常处理机制包围的代码,只有这段代码出现异常,才会处理.一但这段代码出现异常,程序会继续往下走.
num = int(input('num >>>'))
print(l[num - 1])
except ValueError : # except处理的异常必须和实际报错的异常是相同的
print('请输入一个数字')
print(l[num - 1])

多分支

 l = ['login','register']
for num,i in enumerate(l,1):
print(num,i) try:
num = int(input('num >>>'))
print(l[num - 1])
except ValueError :
# 从上向下报错的代码只要找到一个和报错类型相符的分支就执行这个分支中的代码,然后直接退出分支
print('请输入一个数字')
except IndexError :
# 如果找不到能处理和报错类型相同的分支,会一直往下走,最后还是没有找到就会报错
print('只能输入1或2')

多分支合并

 l = ['login','register']
for num,i in enumerate(l,1):
print(num,i) try:
num = int(input('num >>>'))
print(l[num - 1])
except (ValueError,IndexError) : #做相同的处理时,可以将异常合并
print('您输入的内容不合法')

万能异常

 def buy():
print('buy')
name def back():
print('back')
[][1] def show():
print('show')
1/0 def main():
l = [('购物',buy),('退货',back),('查看订单',show)]
while True:
for num,i in enumerate(l,1):
print(num,i[0])
num = int(input('num >>>'))
print(l[num - 1])
try:
func = l[num - 1][1]
func()
except Exception:
print('用户在选择了%s操作之后发生了不可知的异常' % l[num - 1][0]) main()

as语法

 # as语法  能够将具体错误信息打印出来
def buy():
print('buy')
name def back():
print('back')
[][1] def show():
print('show')
1/0 def main():
l = [('购物',buy),('退货',back),('查看订单',show)]
while True:
for num,i in enumerate(l,1):
print(num,i[0])
num = int(input('num >>>'))
print(l[num - 1])
try:
func = l[num - 1][1]
func()
except Exception as e:
print(e)
#print(e.args,e.__traceback__.tb_lineno,e.__traceback__.tb_frame)
print('用户在选择了%s操作之后发生了不可知的异常' % l[num - 1][0]) main()

Python_Mix*异常处理的更多相关文章

  1. 关于.NET异常处理的思考

    年关将至,对于大部分程序员来说,马上就可以闲下来一段时间了,然而在这个闲暇的时间里,唯有争论哪门语言更好可以消磨时光,估计最近会有很多关于java与.net的博文出现,我表示要作为一个吃瓜群众,静静的 ...

  2. 基于spring注解AOP的异常处理

    一.前言 项目刚刚开发的时候,并没有做好充足的准备.开发到一定程度的时候才会想到还有一些问题没有解决.就比如今天我要说的一个问题:异常的处理.写程序的时候一般都会通过try...catch...fin ...

  3. 异常处理汇总 ~ 修正果带着你的Net飞奔吧!

    经验库开源地址:https://github.com/dunitian/LoTDotNet 异常处理汇总-服 务 器 http://www.cnblogs.com/dunitian/p/4522983 ...

  4. JavaScript var关键字、变量的状态、异常处理、命名规范等介绍

    本篇主要介绍var关键字.变量的undefined和null状态.异常处理.命名规范. 目录 1. var 关键字:介绍var关键字的使用. 2. 变量的状态:介绍变量的未定义.已定义未赋值.已定义已 ...

  5. IL异常处理

    异常处理在程序中也算是比较重要的一部分了,IL异常处理在C#里面实现会用到一些新的方法 1.BeginExceptionBlock:异常块代码开始,相当于try,但是感觉又不太像 2.EndExcep ...

  6. Spring MVC重定向和转发以及异常处理

    SpringMVC核心技术---转发和重定向 当处理器对请求处理完毕后,向其他资源进行跳转时,有两种跳转方式:请求转发与重定向.而根据要跳转的资源类型,又可分为两类:跳转到页面与跳转到其他处理器.对于 ...

  7. 【repost】JS中的异常处理方法分享

    我们在编写js过程中,难免会遇到一些代码错误问题,需要找出来,有些时候怕因为js问题导致用户体验差,这里给出一些解决方法 js容错语句,就是js出错也不提示错误(防止浏览器右下角有个黄色的三角符号,要 ...

  8. 札记:Java异常处理

    异常概述 程序在运行中总会面临一些"意外"情况,良好的代码需要对它们进行预防和处理.大致来说,这些意外情况分三类: 交互输入 用户以非预期的方式使用程序,比如非法输入,不正当的操作 ...

  9. 关于bug分析与异常处理的一些思考

    前言:工作三年了,工作内容主要是嵌入式软件开发和维护,用的语言是C,毕业后先在一家工业自动化控制公司工作两年半,目前在一家医疗仪器公司担任嵌入式软件开发工作.软件开发中,难免不产生bug:产品交付客户 ...

随机推荐

  1. Exp1 PC平台逆向破解 20164303 景圣

    逆向及Bof基础实验 实验对象 文件名为pwn1的linux可执行文件. 实验目标:程序正常执行流程weimain调用foo函数,foo函数会简单回显任何用户输入的字符串.该程序同时包含另一个代码片段 ...

  2. kubernets controller 和 CRD 具体组件分析

    (dlv) b k8s.io/sample-controller/pkg/client/informers/externalversions.(*sharedInformerFactory).Info ...

  3. numpy, matplotlib库学习笔记

    Numpy库学习笔记: 1.array()   创建数组或者转化数组 例如,把列表转化为数组 >>>Np.array([1,2,3,4,5]) Array([1,2,3,4,5]) ...

  4. GreenDao教程2

    总述: 所有的增删改查都需要通过greendao通过实体对象类生成的Dao来实现, 具体实现如下图 1.初始化数据库操作对象(GreenDao自动生成的操作对象) 2.通过数据库操作对象,进行增删改查 ...

  5. Summary on deep learning framework --- Torch7

    Summary on deep learning framework --- Torch7  2018-07-22 21:30:28 1. 尝试第一个 CNN 的 torch版本, 代码如下: -- ...

  6. 深入浅出ES6:不定参数和默认参数

    不定参数 我们通常使用可变参函数来构造API,可变参函数可接受任意数量的参数.例如,String.prototype.concat方法就可以接受任意数量的字符串参数.ES6提供了一种编写可变参函数的新 ...

  7. 读书笔记--《编写高质量代码:改善Python程序的91个建议》

      第一章 引论 建议写Pythonic式的代码,我理解为充分利用pythonAPI,用最简洁方式写出代码 1.两个变量交换: a, b = b, a 2.翻转list: a = [1, 2, 3, ...

  8. RabbitMQ跟Redis做消息队列的区别

    区别 https://www.zhihu.com/question/20795043 https://blog.csdn.net/dd18709200301/article/details/79077 ...

  9. [pycharm]远程调试服务器项目

    Pycharm远程调试服务器项目 准备工作 创建一个临时项目,用pycharm打开项目 mkdir xxx 准备一台远程服务器,尝试连接服务器 ssh worker@ip 同步项目到pycharm 配 ...

  10. (2)OSi模型

    osi七层模型 #(应用层,表示层,会话层) => 应用层 => 表达一个数据信息 # 传输层 port(端口) tcp/udp协议 硬件设备:四层交换机 四层路由器 # 网络层 ip协议 ...