什么是异常?

------异常:不正常的情况

  • 异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行。一般情况下,在Python无法正常处理程序时就会发生一个异常。
  • 异常是Python对象,表示一个错误。
  • 当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行。

异常出现的原因:

不正常的情况,在程序中,会有两种体现:

  • 代码错误或语法错误;程序都运行不起来!
  • 程序运行过程中,在某些特定条件下,不合适的数据引起程序出现错误导致程序崩溃

例如:要求用户输入一个数字,但是用户误操作输入了字符串,在进行类型转换时就会出现错误导致程序崩溃!


为什么要处理异常?

当程序在运行过程中,由于用户的误操作或者不合适的数据引发的程序错误,让代码自己处理并保证程序的正常执行。而不至于因为错误导致程序崩溃!

这样提高代码的健壮性!


怎么处理异常?

l 捕获处理异常

l 断言处理异常【测试异常信息】

捕获处理异常语法:

捕捉异常可以使用 try/except 语句。

try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理。

如果你不想在异常发生时结束你的程序,只需在try里捕获它。

语法:

以下为简单的try....except...else的语法:

 try:

 <语句>        #运行别的代码

 except <名字>:

 <语句>        #如果在try部份引发了'name'异常

 except <名字>,<数据>:

 <语句>        #如果引发了'name'异常,获得附加的数据

 else:

 <语句>        #如果没有异常发生

 finally:              

 <语句>                #无论try语句是否发生异常,都要执行的语句

处理异常:

1. 基本异常处理

try-except直接处理异常【可以处理任何异常—不能定位具体是什么异常】

try-except [异常信息] 【可以处理指定的异常】

2. 常见的异常

所有异常的超类:BaseException

标准异常的超类:Exception(BaseException)

程序执行过程中经常看到的异常:

……

3. 处理多个异常

try-except (E1, E2, E3, …,En) as e 一个except处理指定的多个异常

try-except E1-except E2-except E3… 每个except处理指定的异常

通常情况下,我们要查看异常信息,就需要打印异常信息—打印e变量的值

问题:

1) 系统提供的异常信息,晦涩难懂!

2) 系统提供的异常信息,毕竟有限!

4. 自定义异常

通过创建一个新的异常类,程序可以命名它们自己的异常。异常应该是典型的继承自Exception类,通过直接或间接的方式。

以下为与RuntimeError相关的实例,实例中创建了一个类,基类为RuntimeError,用于在异常触发时输出更多的信息。

在try语句块中,用户自定义的异常后执行except块语句,变量 e 是用于创建Networkerror类的实例。

 class Networkerror(RuntimeError):

 def __init__(self, arg):

 self.args = arg

在你定义以上类后,你可以触发该异常,如下所示:

 try:

 8   raise Networkerror("Bad hostname")
9
except Networkerror,e: 12   print e.args

异常的参数

一个异常可以带上参数,可作为输出的异常信息参数。

5. 主动抛出异常

我们可以使用raise语句自己触发异常

raise语法格式如下:

raise [Exception [, args [, traceback]]]

语句中Exception是异常的类型(例如,NameError)参数是一个异常参数值。该参数是可选的,如果不提供,异常的参数是"None"。

最后一个参数是可选的(在实践中很少使用),如果存在,是跟踪异常对象。

实例

一个异常可以是一个字符串,类或对象。 Python的内核提供的异常,大多数都是实例化的类,这是一个类的实例的参数。

定义一个异常非常简单,如下所示:

 def functionName( level ):

     if level < 1:
raise "Invalid level!", level
# The code below to this would not be executed
# if we raise the exception

注意:为了能够捕获异常,"except"语句必须有用相同的异常来抛出类对象或者字符串。

例如我们捕获以上异常,"except"语句如下所示:

     try:
8 Business Logic here...
9 except "Invalid level!":
10 Exception handling here...
11 else:
12 Rest of the code here...

在开发的过程中,主动出现一种错误,将错误抛出给程序告诉程序出错了。

6.异常处理理解

自定义异常,就是为了专门抛出错误的,抛出错误,就是严重警告这里出现了什么问题

首先-代码执行过程中,出现了异常【系统标准异常】【信息不是很明白】

捕获系统异常,创建一个自定义异常

抛出自定义异常【自定义异常】【信息明确的错误】

自定义异常的目的:转换异常信息,将不明确的异常信息转换成更加精确的异常信息

转换异常信息:异常的传递~传递更加明确的异常,给后面的代码进行处理!

python中的异常处理:厌而不舍的更多相关文章

  1. Python基础---python中的异常处理

    Python中的异常处理 一.什么是异常处理 python解释器检测到错误,触发异常(也允许程序员自己触发异常) 程序员编写特定的代码,专门用来捕捉这个异常(这段代码与程序逻辑无关,与异常处理有关) ...

  2. python中的异常处理机制

    python中的异常处理 1.什么是异常 异常就是程序运行时发生错误的信号(在程序出现错误时,则会产生一个异常,若程序没有处理它,则会抛出该异常,程序的运行也随之终止),在python中,错误触发的异 ...

  3. 第五章 python中的异常处理

    每种编程语言都会有自己的异常处理机制,虽然各有特色,但基本上都差不多,那么python中强大异常处理机制是什么样的呢? 一.异常: python用异常对象来表示异常情况,遇到错误后,会引发异常.如果异 ...

  4. Python中的异常处理 -- (转)

    python中的异常   异常是指程序中的例外,违例情况.异常机制是指程序出现错误后,程序的处理方法.当出现错误后,程序的执行流程发生改变,程序的控制权转移到异常处理. Exception类是常用的异 ...

  5. python基础20 -------python中的异常处理

    一.python程序中的会出现的错误. 1.语法错误:这种错误根本过不了python解释器的语法检测阶段,必须在程序执行之前进行改正. 2.逻辑错误:这种错误虽然过了语法检测阶段但是程序在执行的过程中 ...

  6. python中的异常处理tryexcept

    1.异常基础 在编程过程中为了增加友好性,在程序出现bug时一般不会将错误信息显示给用户,而是现实一个提示的页面,通俗来说就是不让用户看见大黄页!!! 2.异常种类 names = ['张三','李四 ...

  7. python中的异常处理try/except/finally/raise

    异常发生在程序执行的过程中,如果python无法正常处理程序就会发生异常,导致整个程序终止执行,python中使用try/except语句可以捕获异常. try/except 异常的种类有很多,在不确 ...

  8. python中的异常处理常用方法

    异常处理 什么是异常? 异常就是与正常情况不同,程序在执行过程中出现错误,导致无法执行完毕.异常其实就是代码执行过程中出错. 常见的一些异常 AttributeError 试图访问一个对象没有的属性, ...

  9. python 中的异常处理与种类

    异常处理是Python工程中补课避免的,进行异常处理,可以帮我们调试代码,使代码找起问题更加简单,更加容易哦. 一般都是利用Try,比较简单,代码也不复杂. try: print 'try...' r ...

随机推荐

  1. hadoop3.1.1 HA高可用分布式集群安装部署

    1.环境介绍 涉及到软件下载地址:https://pan.baidu.com/s/1hpcXUSJe85EsU9ara48MsQ 服务器:CentOS 6.8 其中:2 台 namenode.3 台 ...

  2. [Reversal 剧情设计] 设定

    在正式写之前,先交代一些设定,便于后续的展开.先在这里说明一点,我的文笔可能很烂(因为在写小说方面还没有得到过别人的评价),只要你们能体会我想表达的东西就行(不过也的确是这样,如果作者构筑得过于详细, ...

  3. 概率DP (大概是最入门的题了) lightoj 1248

    有一个骰子,n个面,问所有面都被摇出的期望. 转自**的博客,  因为概率是(n-k)/n  所以期望次数是1/(前面这个数) #include<cstdio> #include<a ...

  4. Linux实现树莓派3B的国密SM9算法交叉编译——(三)国密SM9算法实现

    先参考这篇文章 Linux实现树莓派3B的国密SM9算法交叉编译——(二)miracl库的测试与静态库的生成 进行miracl库的交叉编译测试,并生成miracl静态链接库. 这篇文章主要介绍基于mi ...

  5. 【C语言】(指针) 将两个数排序

    原理就不讲了,这里用来理解指针的使用方法 代码1: #include <stdio.h> int main() { int a, b;/* 实际变量的声明 */ int* p, * q;/ ...

  6. python浅析模块,包及其相关用法

    一,模块 什么是模块? 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里面,代码会越来越长,越来越不容易维护. 为了编写可以维护的代码,我们把很多函数分组,分别放到不同额文件,这样,每个文 ...

  7. 02hive数据类型

    一. 基本数据类型 对于 Hive 的 String 类型相当于数据库的 varchar 类型,该类型是一个可变的字符串,不过它不能声明其中最多能存储多少个字符,理论上它可以存储 2GB 的字符数. ...

  8. 设置textarea不可拉伸

    默认情况下,我们将鼠标移动到textarea的右下角时发现文本域是可以通过拖动的方式改变其大小的,这会影响我们原本的页面布局.若想设置其不可拖动,可为其添加如下属性: style="resi ...

  9. 企业级Docker镜像仓库Harbor部署与使用

    yum install docker 官网地址:https://docs.docker.com/compose/install/ 运行此命令以下载Docker Compose的当前稳定版本 1 sud ...

  10. qq音乐解析API

    文档:www.tjit.net 开放的接口:api88.net 个人代码: input2(event){ //将字符转化为encodeURL编码,才能进行正确请求,这是这个接口要求的 //js自带的转 ...