python异常处理try判断整数 | 您所在的位置:网站首页 › 码农速成班 › python异常处理try判断整数 |
一、try...except 有时候我们写程序的时候,会出现一些错误或异常,导致程序终止。例如,做除法时,除数为0,会引起一个ZeroDivisionError 例子: 1 2 3 4 a=10 b=0 c=a/b print "done" 运行结果: Traceback (most recent call last): File "C:/Users/lirong/PycharmProjects/untitled/openfile.py", line 3, in c=a/b ZeroDivisionError: integer division or modulo by zero 我们发现程序因为ZeroDivisionError而中断了,语句print "done" 没有运行。为了处理异常,我们使用try...except,更改代码: 1 2 3 4 5 6 7 8 a=10 b=0 try: c=a/b print c except ZeroDivisionError,e: print e.message print "done" 运行结果: integer division or modulo by zero done 这样程序就不会因为异常而中断,从而print "done"语句正常执行。 我们把可能发生错误的语句放在try模块里,用except来处理异常。except可以处理一个专门的异常,也可以处理一组圆括号中的异常,如果except后没有指定异常,则默认处理所有的异常。每一个try,都必须至少有一个except 处理一组异常可以这样写(其中e代表异常的实例): 1 2 3 4 try: pass except (IOError ,ZeroDivisionError),e: print e try ....except...else 语句,当没有异常发生时,else中的语句将会被执行。 例子: 1 2 3 4 5 6 7 8 9 10 a=10 b=0 try: c= b/ a print c except (IOError ,ZeroDivisionError),x: print x else: print "no error" print "done" 运行结果: 0 no error done 二、raise 引发一个异常 例子:如果输入的数据不是整数,则引发一个ValueError 1 2 3 4 5 inputValue=input("please input a int data :") if type(inputValue)!=type(1): raise ValueError else: print inputValue 假设输入1.2,运行结果为: please input a int data :1.2 Traceback (most recent call last): File "C:/Users/lirong/PycharmProjects/untitled/openfile.py", line 3, in raise ValueError ValueError 如果输入1,运行结果为: please input a int data :1 1 三、try ...finally 无论异常是否发生,在程序结束前,finally中的语句都会被执行。 1 2 3 4 5 6 a=10 b=0 try: print a/b finally: print "always excute" 运行结果: Traceback (most recent call last): always excute File "C:/Users/lirong/PycharmProjects/untitled/openfile.py", line 4, in print a/b ZeroDivisionError: integer division or modulo by zero 虽然有异常发生,但在程序终止前,finally中的语句也能正常执行。。 finally语句也可以和except语句一起使用。 1 2 3 4 5 6 7 8 a=10 b=0 try: print a/b except: print "error" finally: print "always excute" 运行结果: error always excute 四、自定义一个异常类 自定义一个MyException类,继承Exception。 1 2 3 4 class MyException(Exception): def __init__(self,message): Exception.__init__(self) self.message=message 如果输入的数字小于10,就引发一个MyException异常: 1 2 3 4 5 6 a=input("please input a num:") if a |
CopyRight 2018-2019 实验室设备网 版权所有 |