这篇文章主要是了解python异常有哪些类型,以及如何处理python异常?具有一定的参考价值。有需要的朋友可以参考一下。希望对您有所帮助。如果你有其他编程语言的经验,比如Java,你可以更深入地理解它。我们知道,异常处理是编程语言或计算机硬件中的一种机制,用于处理软件或信息系统中的异常情况(即超出程序正常执行流程的一些特殊情况)。现代编程语言都有这种保证机制来保证程序整体的稳定运行……废话不多说,我们来看看Python的异常及相关处理。1.异常的类型异常有多种类型。常见的异常是:AttributeError试图访问一个对象没有的属性,例如foo。模块或包;基本上是路径问题或名称错误IndentationError语法错误(子类);codenotalignedproperlyIndexError下标索引超出序列边界,例如当x只有三个元素时尝试访问x[5]KeyError访问字典中不存在的键KeyboardInterruptCtrl+C被按下NameError尝试访问一个undeclaredvariableSyntaxErrorPython代码不合法??,代码无法编译(个人认为这是语法错误,写错了)没有被设置,主要是因为有另一个同名的全局变量,导致你认为你正在访问它ValueError传入一个调用者不期望的值,即使值类型是正确的exceptionBaseException所有异常的基类SystemExit解释器请求退出KeyboardInterrupt用户中断执行(通常输入^C)Exception一般错误的基类StopIterationIteratorhasnomorevaluesGeneratorExit生成器(generator)异常通知退出StandardError所有内置标准异常的基类ArithmeticError所有数值计算错误的基类FloatingPointError浮点计算错误OverflowError数值运算超出最大限制ZeropisionError除以(或取模)零(所有数据类型)AssertionError断言语句失败AttributeError对象没有此属性EOFError没有内置输入,达到EOF标记EnvironmentError操作系统错误的基类IOError输入/输出操作失败OSError操作系统错误WindowsError系统调用失败ImportError导入模块/对象失败LookupError无效数据查找的基类IndexError序列没有这个索引(索引)KeyError映射没有这个键MemoryError内存不足错误(对Python解释器来说不是致命的)参考)试图访问已被垃圾收集的对象RuntimeError一般运行时错误NotImplementedError方法尚未实现SyntaxErrorPython语法错误IndentationErrorTabErrorTab和空格混合SystemError一般解释器系统错误TypeErrorInvalidoperationfortypeValueErrorInvalidpassParametersofUnicodeErrorUnicode-relatederrorsUnicodeDecodeErrorUnicode解码错误UnicodeEncodeErrorUnicode编码错误UnicodeTranslateErrorUnicode转换错误lowWarningOldWarningsaboutautomaticpromotiontolongintegers(long)PendingDeprecationWarning关于将被弃用的特性的警告RuntimeWarning关于可疑运行时行为(runtimebehavior)的警告SyntaxWarning关于可疑语法的警告UserWarning用户代码产生的警告2.捕获异常,处理异常只能通过捕获相应的异常类型来处理。异常处理方法:try:#程序执行的代码,异常检测的代码passexceptExceptionase:#捕获到异常后要执行的代码,print(e)passelse:#No捕获异常后要执行的代码相应的异常被捕获passfinally:#不管是否有异常被捕获,最后要执行的代码pass这里的except就像java中的catch。也可以在代码中加入多条except语句,捕获不同类型的异常,执行相应的不同操作3.主动抛出的异常可以手动加入try:raiseException("Ithrowitmyself")exceptExceptionase:print(e)#这里会输出"Ithrowitmyself"4.自定义异常类型在实际编程中,语言内置的异常并不总是足够的,所有,我们可以自己定义需要的异常类型,可以通过这种方式实现。主要是利用类中的__str__方法实现classmyException(BaseException):def__init__(self,message):self.message=messagedef__str__(self):returnsself.messagetry:raisemyException('自定义异常类型')exceptmyExceptionase:print(e) 5.Assertion断言用于判断某个条件是否为真。如果不是,则抛出AssertionError异常,该异常可以被捕获。示例如下:assert条件类如:assert1==1assert2+2==2*2assertlen(['mylist',12])<10assertrange(3)==[0,1,2]#相当于ifnotcondition:raiseAssertionError()assertcondition,"description"#Equivalenttoifnotcondition:raiseAssertionError("description")下面是我们如何使用try-except语句来捕获AssertionError异常:try:assert1==0,'Onedoesnotequalzerosilly!'exceptAssertionError,args:print(args.__class__.__name__,":",args)以上是python异常及相关处理。相信如果你在Python编程中遇到异常问题,以上内容足以帮助你应对。
