python异常处理--try...except

在python中,用try来测试可能出现异常的语句,然后用except来处理可能出现的异常,try except的表达形式如下:

try:

    语句

except [exception,[data...]]:

    Do something

except [exception,[data...]]:

    Do something

except [exception,[data...]]:

    Do something

意思是,尝试执行语句,如果出现某个异常则怎么做,因为同一个语句可能出现不同的异常,所以也会给出不同的解决方法,另外try还可以配合else,finally语句一起使用,不过这种情况比较少

以常见的输入数据异常为例,编写一个testtryinput.py实验一下,代码如下

# coding: utf-8
__author__ = 'www.py3study.com'
class tryinput(object):
    def __init__(self):
        self.len = 10
        self.numlist = self.createlist()
        self.getnum()

    def createlist(self):
        print(u"创建一个长度为{}的数字列表".format(self.len))
        numL = []
        while len(numL) < 10:
            n = input("请输入一个整数:")
            try:
                num = int(n)
            except ValueError:
                print(u"输入错误,要求输入一个整数")
                continue
            numL.append(num)
            print(u"现在的列表为:")
            print(numL)
        return numL

    def getnum(self):
        print(u"当前列表为:")
        print(self.numlist)
        instr = None
        while instr != 'EXIT':
            print(u"输入EXIT退出程序")
            instr = input("输入列表下标[-10,9]:")
            try:
                index = int(instr)
                num = self.numlist[index]
                print(u"列表中下标为{}的值为{}".format(index, num))
            except ValueError:
                print(u"输入有误,列表下标是一个整数")
                continue
            except IndexError:
                print(u"下标太大,访问列表超出范围")
                continue

if __name__ == '__main__':
    tl = tryinput()

应该看到的结果

"C:\Program Files (x86)\python3.6\python.exe" D:/python3_study/test_tryinput.py

创建一个长度为10的数字列表

请输入一个整数:x

输入错误,要求输入一个整数

请输入一个整数:1

现在的列表为:

[1]

请输入一个整数:2

现在的列表为:

[1, 2]

请输入一个整数:3

现在的列表为:

[1, 2, 3]

请输入一个整数:4

现在的列表为:

[1, 2, 3, 4]

请输入一个整数:5

现在的列表为:

[1, 2, 3, 4, 5]

请输入一个整数:6

现在的列表为:

[1, 2, 3, 4, 5, 6]

请输入一个整数:7

现在的列表为:

[1, 2, 3, 4, 5, 6, 7]

请输入一个整数:8

现在的列表为:

[1, 2, 3, 4, 5, 6, 7, 8]

请输入一个整数:9

现在的列表为:

[1, 2, 3, 4, 5, 6, 7, 8, 9]

请输入一个整数:0

现在的列表为:

[1, 2, 3, 4, 5, 6, 7, 8, 9, 0]

当前列表为:

[1, 2, 3, 4, 5, 6, 7, 8, 9, 0]

输入EXIT退出程序

输入列表下标[-10,9]:a

输入有误,列表下标是一个整数

输入EXIT退出程序

输入列表下标[-10,9]:100

下标太大,访问列表超出范围

输入EXIT退出程序

输入列表下标[-10,9]:8

列表中下标为8的值为9

输入EXIT退出程序

输入列表下标[-10,9]:EXIT

输入有误,列表下标是一个整数

Process finished with exit code 0

这个程序就是针对输入出现的异常和访问列表越界的异常给出了解决方案,在编程过程中总会遇上各种各样的异常,考虑周全一点,思维缜密一点,善用try一点,程序的健壮性就不止强一点点

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏java 成神之路

java 中的内省 introspector

29160
来自专栏一枝花算不算浪漫

Thinking in java中关于Exception的一道面试题.

381160
来自专栏北京马哥教育

Python爬虫基础知识:Python中的正则表达式教程

云豆贴心提醒,本文阅读时间7分钟 正则表达式在Python爬虫中的作用就像是老师点名时用的花名册一样,是必不可少的神兵利器。 一、 正则表达式基础 1.1.概...

28860
来自专栏用户2442861的专栏

python语法31[引用和拷贝]

  If an object’s value can be modified, the object is said to be mutable. If the...

9710
来自专栏向治洪

Kotlin的委托属性和区间

委托属性 委托属性 是一种通过委托实现拥有 getter 和可选 setter 的 属性,并允许实现可复用的自定义属性。例如: class Example { ...

25470
来自专栏数据之美

关于腾讯的一道字符串匹配的面试题

Question:  假设两个字符串中所含有的字符和个数都相同我们就叫这两个字符串匹配,  比如:abcda和adabc,由于出现的字符个数都是相同,只是顺序不...

26050
来自专栏函数式编程语言及工具

泛函编程(5)-数据结构(Functional Data Structures)

     编程即是编制对数据进行运算的过程。特殊的运算必须用特定的数据结构来支持有效运算。如果没有数据结构的支持,我们就只能为每条数据申明一个内存地址了,然后使...

22660
来自专栏微信公众号:Java团长

Java动态代理机制详解

在学习Spring的时候,我们知道Spring主要有两大思想,一个是IoC,另一个就是AOP,对于IoC,依赖注入就不用多说了,而对于Spring的核心AOP来...

15510
来自专栏JetpropelledSnake

Python学习笔记之Python正则表达式指南

正则表达式并不是Python的一部分。正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十分...

22010
来自专栏架构之路

动态代理模式原理

在学习Spring的时候,我们知道Spring主要有两大思想,一个是IoC,另一个就是AOP,对于IoC,依赖注入就不用多说了,而对于Spring的核心AOP来...

37240

扫码关注云+社区

领取腾讯云代金券