python异常中的else作用

一、概念

异常:

常见的异常语句:

1. try except else
2. try finally
3. raise
4. assert
5. with as

二、else的作用

首先,了解一下exception和else在作用:

 except:捕获try中的异常项,如IndexException, SyntaxError等,即异常处理器;

 else:在try中不存在任何异常时,才会执行else中的语句;

这里,我想到了两个问题:1、else使用的时机是什么?2、存在与不存在else有什么区别?

示例1:

def fetcher(obj, index):
	return obj[index]

x = ‘spam‘

try:
	print fetcher(x, 3)
except Exception:
	print ‘hhh‘
else:
	print ‘has no exception‘
	print fetcher(x, 2)
	print ‘---‘ * 10

try:
	print fetcher(x, 4)
except IndexError:
	print ‘got exception‘
else:
	print ‘has no exception‘
	print fetcher(x, 2)

  

 运行结果:

m
has no exception
a
------------------------------
got exception

 

从上面的结果中可以看出,但try中存在异常时,不会执行else中的语句。这样,我们可以发现,如果在前面的语句发生异常时,后面的语句不需要继续执行下去,则可以放到else中

示例2:

def fetcher(obj, index):
	return obj[index]

x = ‘spam‘

try:
	print fetcher(x, 3)
except Exception:
	print ‘hhh‘
else:
	print ‘has no exception‘
print fetcher(x, 2)
print ‘---‘ * 10

try:
	print fetcher(x, 4)
except IndexError:
	print ‘got exception‘
else:
	print ‘has no exception‘
print fetcher(x, 2)

 结果为:

m
has no exception
a
------------------------------
got exception
a

  

从上面的结果中可以得出,如果没有else将其他代码在except的后面,不管try中是否存在异常,都会执行后面的语句

时间: 2024-08-25 09:26:36

python异常中的else作用的相关文章

Python包中__init__.py作用

在创建python包的过程中,IDE都会在包根目录下创建一个__init__.py文件,该Python文件默认是空的.目录结构如下: Pycharm下的package树结构: 在Finder中的目录结构: 从Finder中的目录就可以看出来,每个package实际上是一个目录(Directory),那么IDE是怎么识别它为package呢?没错,__init__.py的第一个作用就是package的标识,如果没有该文件,该目录就不会认为是package. Python中的包和模块有两种导入方式:

Python类中反射的作用

#coding:utf-8 ''' #反射的基本用法: hasattr 判断一个方法是否存在于实例中 getattr 指定一个方法名字,获取该方法的内存地址,加"()"括号并可执行 ''' import sys class WebServer(object): def __init__(self,host,port): self.host = host self.port = port def start(self): print("Server is starting...

python程序中if __name__ == '__main__':的作用。

首先先用代码来看__name__的作用 1 ModuOne.py被调用程序 2 3 def MethodOne (varone): 4 print(__name__) 5 print(varone) 6 7 MethodOne("程序测试") 8 9 C:\python ModuOne.py #可以看到直接运行ModuOne.py时__name__被打印成"__main__" 10 __main__ 11 程序测试 #函数测试被执行 12 13 14 zuma.py

python编程中的if __name__ == 'main': 的作用和原理

在大多数编排得好一点的脚本或者程序里面都有这段if __name__ == 'main': ,虽然一直知道他的作用,但是一直比较模糊,收集资料详细理解之后与打架分享. 1.这段代码的功能 一个python的文件有两种使用的方法,第一是直接作为脚本执行,第二是import到其他的python脚本中被调用(模块重用)执行.因此if __name__ == 'main': 的作用就是控制这两种情况执行代码的过程,在if __name__ == 'main': 下的代码只有在第一种情况下(即文件作为脚本

Python正则表达式中的re.S的作用

在Python的正则表达式中,有一个参数为re.S.它表示"."(不包含外侧双引号,下同)的作用扩展到整个字符串,包括"\n".看如下代码: 1 import re 2 a = '''asdfhellopass: 3 worldaf 4 ''' 5 b = re.findall('hello(.*?)world',a) 6 c = re.findall('hello(.*?)world',a,re.S) 7 print 'b is ' , b 8 print 'c

【转】python编程中的if __name__ == 'main': 的作用和原理

在大多数编排得好一点的脚本或者程序里面都有这段if __name__ == 'main': ,虽然一直知道他的作用,但是一直比较模糊,收集资料详细理解之后与打架分享. 1.这段代码的功能 一个python的文件有两种使用的方法,第一是直接作为脚本执行,第二是import到其他的python脚本中被调用(模块重用)执行.因此if __name__ == 'main': 的作用就是控制这两种情况执行代码的过程,在if __name__ == 'main': 下的代码只有在第一种情况下(即文件作为脚本

Python包中 __init__.py文件的作用

原创连接 https://www.cnblogs.com/AlwinXu/p/5598543.html Python包中 __init__.py文件的作用 在创建python包的过程中,IDE都会在包根目录下创建一个__init__.py文件,该Python文件默认是空的.目录结构如下: Pycharm下的package树结构: 在Finder中的目录结构: 从Finder中的目录就可以看出来,每个package实际上是一个目录(Directory),那么IDE是怎么识别它为package呢?没

python语句中的 end=' ' 的作用

为末尾end传递一个空字符串,这样print函数不会在字符串末尾添加一个换行符,而是添加一个空字符串,其实这也是一个语法要求,表示这个语句没结束. print默认是打印一行,结尾加换行.end=' '意思是末尾不换行,加空格 如下所示:使用for循环实现九九乘法表:(使用 end=' ') 梯度展示打印一行,结尾加换行 for i in range(1, 10): for j in range(1, i + 1): print('{}x{}={}\t'.format(j, i, i * j),

事务配置在applicationContext.xml文件中不起作用,控制不了异常回滚

一.博主在学习到整合ssm框架的时候,遇到一个奇葩的问题就是将 事务的控制 ,写在在applicationContext.xml文件中不起作用,在事务控制的方法中,即使出现了异常,但是事务不会回滚的坑,按道理说,我们配置了事务,在异常发生是,运行时期的异常被我们的框架捕获到,就会为我们做出回滚的操作,但是就是没有,比如博主写的一个简单的转帐的事务,第一个账户的钱被扣除了,但是在执行完扣钱之后发生了异常但是我们在数据库中却发现,钱仍然被扣了, 博主也试过网上的大多数的方法,都是只说原因,并不能解决