Python3异常处理

Python3异常处理

一. 简介

  在编程过程中为了增加友好性,在程序出现Bug时一般不会直接将错误信息展示给用户,而是提供一个友好的输出提示。

 

二. 使用

1. 异常基础

常用结构:

1
2
3
4
try:
    pass
except Exception,ex:
    pass

其他结构:

1
2
3
4
5
6
7
8
9
10
11
12
try:
    # 主代码块
    pass
except KeyError,e:
    # 异常时,执行该块
    pass
else:
    # 主代码块执行完,执行该块
    pass
finally:
    # 无论异常与否,最终执行该块
    pass

2. 异常种类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#  常用异常种类
AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x
IOError 输入/输出异常;基本上是无法打开文件
ImportError 无法引入模块或包;基本上是路径问题或名称错误
IndentationError 语法错误(的子类) ;代码没有正确对齐
IndexError 下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5]
KeyError 试图访问字典里不存在的键
KeyboardInterrupt Ctrl+C被按下
NameError 使用一个还未被赋予对象的变量
SyntaxError Python代码非法,代码不能编译(个人认为这是语法错误,写错了)
TypeError 传入对象类型与要求的不符合
UnboundLocalError 试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,
导致你以为正在访问它
ValueError 传入一个调用者不期望的值,即使值的类型是正确的

3. 多个异常捕获

1
2
3
4
5
6
7
8
try:
    pass
except IndexError,e:
    pass
except KeyError,e:
    pass
except ValueError,e:
    pass 

4. 万能异常捕获

1
2
3
4
try:
    pass
except  Exception,e:
    pass

疑问:既然有了万能异常,那么我们还需要单异常捕获或者多异常捕获吗?

自问自答:很多场景我们需要明确异常种类,根据异常种类能快速定位产生异常的原因。如果所有异常都用万能异常捕获,虽然避免了程序抛出难看的异常,但是也无法帮助我们解决问题,常用思路是对于特殊的异常我们单独做异常报错,其他可以忽略的异常用万能异常处理。

1
2
3
4
5
6
7
8
9
s1 = 'hello'
try:
    int(s1)
except KeyError,e:
    print('键错误')
except IndexError,e:
    print('索引错误')
except Exception, e:
    print('错误')

5. 自定义异常

1
2
3
4
5
6
7
8
9
10
11
12
class MyException(Exception):
  
    def __init__(self, msg):
        self.message = msg
  
    def __str__(self):
        return self.message
  
try:
    raise MyException('我的异常')
except MyException,e:
    print(e)

6. 主动触发异常

1
2
3
4
try:
    raise Exception('错误了。。。')
except Exception,e:
    print(e)

7. 断言

1
2
3
4
5
6
# 条件成立不报错,反之报错
# assert 条件
assert 1 == 1        # 条件成立,则继续执行下面的代码
  
assert 1 == 2        # 条件不成立,则报错

 

 

转载于:https://www.cnblogs.com/meng-wei-zhi/p/8258724.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/267754.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php 正则替换style,php正则去除js,class,id,style标签代码

在写xml的时候,文档要求内容里面只要图片和段落就可以了,其他的css,js什么的都不需要。所以,在输出的时候,就要用正则去过滤掉不需要的标签代码。第一种:php正则去除js标签代码。$preg "/$content preg_replace…

Flex 序列化自定义类 解决 sharedObject 保存自定义对象

问题我想把自定义类实例存储到LSO解决办法使用flash.net.registerClassAlias( )方法保留类型信息并把类实例添加到共享对象的data属性上。讨论LSOs 使用特殊的二进制格式,Action Message Format (AMF),当要在LSO中存储类实例时,实例会被编码为…

js禁止页面滚动

1.申明函数&#xff1a; function preventBackgroundScroll(e: React.WheelEvent){ const target e.currentTarget if ( (e.deltaY < 0 && target.scrollTop < 0) || (e.deltaY > 0 && target.scrollHeight - target.clientHeight - target.scrollTo…

当老虎来临时

两个人在森林里&#xff0c;遇到了一只大老虎。A就赶紧从背后取下一双更轻便的运动鞋换上。B急死了&#xff0c;骂道&#xff1a;“你干嘛呢&#xff0c;再换鞋也跑不过老虎啊&#xff01;” A说&#xff1a;“我只要跑得比你快就好了。” 心得&#xff1a;二十一世纪&am…

R学习-小白笔记05

----回归诊断----#样本是否符合正态分布假设&#xff1f;#是否存在离群值导致模型产生较大误差&#xff1f;#线性模型是否合理&#xff1f;#误差是否满足独立性&#xff0c;等方差&#xff0c;正态分布等假设条件&#xff1f;#是否存在多重共线性&#xff1f; ----正态分布检验…

入门笔记(启动篇)

linux启动过程&#xff1a; bios自检&#xff0d;&#xff0d;&#xff1e;MRB&#xff0d;&#xff0d;&#xff1e;GRUB&#xff0d;&#xff0d;&#xff1e;内核加载&#xff0d;&#xff0d;&#xff1e;INIT&#xff0d;&#xff0d;&#xff1e; /etc/i…

乌班图 之 常用操作命令(二)

一、tree命令 tree [目录名]  以树状图列出文件目录 -d 只显示目录&#xff0c;不显示文件。 二、cp命令 cp即copy   cp 源文件 目标文件 -i  重名自动 覆盖 加了 -i 提示   y/n -r  复制目录及该目录下所有字目录和文件&#xff0c;目标文件必须是一个目录名。 三、…

php 对比两个压缩包内容,php实现的zip文件内容比较类

本文实例讲述了php实现的zip文件内容比较类。是一个非常实用的PHP类文件。分享给大家供大家参考。具体分析如下&#xff1a;该php zip文件比较类主要实现比较两个zip文件的内容&#xff0c;返回新增&#xff0c;删除&#xff0c;及相同的文件列表。暂时只支持单层。需求&#x…

Exchange2010外部传输域的使用方法

安装好EX2010后并不能马上与外部邮件进行收发&#xff0c;需要进行以下几个配置&#xff1a; 1、配置接收连接器 2、配置接受域 3、配置发送连接器 可以参考这个链接&#xff1a;http://www.chinaemail.com.cn/server/xtfl/Exchange/201101/59114.html 下面以我的实例来说明一…

Shiro安全框架入门篇

一、Shiro框架介绍 Apache Shiro是Java的一个安全框架&#xff0c;旨在简化身份验证和授权。Shiro在JavaSE和JavaEE项目中都可以使用。它主要用来处理身份认证&#xff0c;授权&#xff0c;企业会话管理和加密等。Shiro的具体功能点如下&#xff1a; &#xff08;1&#xff09;…

php 京东首页分类导航,仿京东导航栏

摘要&#xff1a; 仿京东顶部导航栏 仿京东顶部导航栏*{margin:0px;padding:0px;}.header{width:100%;height:35px;background-color:#E3E4E5;}.header_content{width:1200px;height:35px;margin:auto;padding:0px;}.header_left{width:300px;height:35px;line-height:35px…

asp.net ajax1.0基础回顾(七):综合应用

本文将通过学生信息管理来介绍asp.net ajax的综合应用实例&#xff0c;包括“浏览”、“查询”、“添加”和“多选删除”功能&#xff0c;以及其它相关设计。 本示例源代码下载地址&#xff1a;http://down.51cto.com/data/220541 本示例中&#xff0c;程序架构参考Petshop&…

探讨程序员如何学习你不熟悉的技术,以及用什么样的方法去学习.

由于公司的业务拓展&#xff0c;有一部份的程序要用Delphi来实现&#xff08;基于原来的程序拓展&#xff09;现在需要学习Delphi&#xff0c;刚开始接手时感觉不知如何下手&#xff08;也许是本人才疏学浅&#xff09;&#xff0c;于是在网上找了很多资料&#xff0c;总是感觉…

转载:关于对REST的基本认识和理解

1.什么是 REST?REST 是属于 WEB 自身的一种架构风格&#xff0c;是在 HTTP 1.1 规范下实现的。Representational State Transfer 全称翻译为表现层状态转化。Resource&#xff1a;资源。比如 newsfeed&#xff1b;Representational&#xff1a;表现形式&#xff0c;比如用JSON…

php ajax取不到值,PHP没有从Ajax获取值

我一直在搜索所有的答案&#xff0c;但我无法让它工作。我想从ajax发送两个整数值到php。这是ajax部分&#xff1a;$(document).ready(function(){$(input[type"radio"]).click(function(){var id_user$(this).filter(:checked).val();var stringname$(this).attr(na…

ASP.NET MVC3书店--第五节 表单编辑(第二部分)(转)

http://blog.sina.com.cn/s/blog_6ad539a90100r469.html5.5 使用HTML帮助器来截短文字 使用我们的StoreManager控制器中的Index方法添加视图的时候&#xff0c;有一个潜在的问题。事实上&#xff0c;我们的书名与作者名属性的长度值可能超出页面上 所定义的这两个列的长度。我们…

SSL-ZYC 1760 商店选址问题

题目大意&#xff1a; 给出一个城市的地图&#xff0c;商店设在一点&#xff0c;使各个地方到商店距离之和最短。 思路&#xff1a; 这是一道最短路的问题。a[i][j]表示从i到j的最短路径&#xff0c;最终求出最小值并输出。 代码&#xff1a; #include <cstdio> #incl…

c++ java通信 protocol buffer,google protocol buffer (C++,Java序列化应用实例)

google protocol buffer (C,Java序列化使用实例)转载,请注明出处: http://blog.csdn.net/eclipser1987/article/details/8525383 (eclipser163.com)1.下载安装:google protocol buffer 的官网地址是:http://code.google.com/p/protobuf/建议下载稳定版本:protobuf-2.4.1 linu…

hadoop等的下载地址

有的时候要使用老的版本hadoop,找不到地方下载,保存连接如下http://archive.apache.org/dist/hadoop/core/http://archive.cloudera.com/cdh/3/

前端“黑话”polyfill

前言 在Web前端开发这个日新月异的时代&#xff0c;总是需要阅读一些最新的英文技术博客来跟上技术的发展的潮流。而有时候会遇到一些比较高频的“黑话”&#xff0c;在社区里面可能已经是人人皆知的“共同语言”&#xff0c;而你接触的少就偏偏看不懂。就像现在几乎所有中国人…