Python错误与异常
语法错误与定位
错误与异常的区别?
错误与异常都是在程序编译和运行时出现的错误
异常可以被开发人员捕获和处理
错误一般是系统错误,一般不需要开发人员处理(也无法处理),比如说内存溢出
什么是异常?
异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行
有些是由于拼写、配置、选项等等各种引起的程序错误,有些是由于程序功能处理逻辑不完善引起的漏洞,这些统称为程序中的异常
异常处理流程
检测到错误----->引发异常--------->捕获异常操作
异常解决方案
如果是拼写、配置等引起的错误,根据出错信息进行排查错误出现的位置进行解决
如果是程序设计不完善引起的漏洞,根据漏洞的情况进行设计处理漏洞的逻辑
异常捕获与异常处理
try: 执行代码 except: 发生异常时执行的代码
在发生异常的时候,我们不希望程序停下来,可以继续运行其他的程序,那么就用try,except来进行异常捕获
try: num1=int(input("输入一个除数")) num2=int(input("输入一个被除数")) print(num1/num2) except: print("这是一个异常")
当发生异常时,打印:这是一个异常,程序不会报错
如果想要在程序中指定某个异常的时候(知道异常的名字):
try: num1=int(input("输入一个除数")) num2=int(input("输入一个被除数")) print(num1/num2) except ZeroDivisionError: #当输入被除数为0时触发此异常 print("被除数不能为0") except ValueError: #当输入的不是数值型整数是触发此异常 print("输入的需要是数值型整数")
当没有发生异常时要进行某个操作时,用else:
如果希望不管有没有发生异常都执行某个操作,用finally:
try: num1=int(input("输入一个除数")) num2=int(input("输入一个被除数")) print(num1/num2) except ZeroDivisionError: #当输入被除数为0时触发此异常 print("被除数不能为0") except ValueError: #当输入的不是数值型整数是触发此异常 print("输入的需要是数值型整数") else: print("没有发生异常") finally: print("无论有没有异常,都执行")
抛出异常
x=10 if x>5: raise Exception("这是抛出的异常信息")
如果不想用系统的异常,可以自己定义异常
class Myexception(Exception): def __init__(self,value1,value2): self.value1=value1 self.value2=value2 raise Myexception("value1","value2")