异常捕捉简单的异常捕捉语法在程序开发中如果对某些代码的执行不能确定是否正确可以增加try(尝试)来捕获异常,防止程序直接中断try: 尝试执行的代码 except: 出现错误的处理错误类型介绍下面我给一个Python的常见异常错误类型表供大家参考错误类型捕捉完整代码在程序执行时可能会遇到不同类型的异常并且需要针对不同类型的异常做出不同的响应这个时候就需要捕获错误类型了。try: # 尝试执行的代码 pass except 错误类型1: # 针对错误类型1对应的代码处理 pass except 错误类型2: # 针对错误类型2对应的代码处理 pass except (错误类型3, 错误类型4): # 针对错误类型3 和 4对应的代码处理 pass except Exception as result: # 打印错误信息 print(result) else: # 没有异常才会执行的代码 pass finally: # 无论是否有异常都会执行的代码 print(无论是否有异常都会执行的代码)具体例子try: num int(input(请输入整数)) result 8 / num print(result) except ValueError: print(请输入正确的整数) except ZeroDivisionError: print(除 0 错误) except Exception as result: print(未知错误 %s % result) else: print(正常执行) finally: print(执行完成但是不保证正确)当不确定错误类型的可以统一用Exception去捕捉异常但是为了错误类型更加清晰不建议这样处理而且SystemExit等几种异常不继承于ExceptionException无法捕捉SystemExit抛出的异常try: exit(100) except Exception as result: print(退出错误 %s % result) #无法捕捉 #except SystemExit as result: #print(退出错误 %s % result) #可捕捉 print(当捕获到异常时程序不退出程序还执行到这一步)异常传递异常的传递—— 当函数/方法执行出现异常会将异常传递给 函数/方法 的调用一方如果传递到主程序仍然没有异常处理程序才会被终止提示在开发中可以在主函数中增加异常捕获而在主函数中调用的其他函数只要出现异常都会传递到主函数的异常捕获中这样就不需要在代码中增加大量的异常捕获能够保证代码的整洁class MufCalc(object): m False def calc(self,exp): try: return eval(exp) except ZeroDivisionError: if self.m: print(cool) else: raise app MufCalc() app.calc(2/0)运行结果Traceback (most recent call last): File D:/code/utils/test.py, line 25, in module app.calc(2/0) ZeroDivisionError: division by zeroraise主动抛出异常在开发中除了代码执行出错Python解释器会抛出异常之外还可以根据应用程序特有的业务需求主动抛出异常。通常我们通过try except捕获的异常叫做被动捕获它其实是需要程序员进行处理的比如对错误的变量内容做一些改正让其继续执行。但是主动抛出异常通常不需要再进行处理程序员已经确定这个地方必须抛出异常给用户并且中断程序执行基于这种情况下程序员就不用再对异常进行处理了Python中提供了一个通用Exception异常类在开发时如果满足特定业务需求时希望抛出异常可以创建一个Exception的对象使用raise关键字抛出异常对象raise Exception(This input type is invaild.) raise RuntimeError(testError) raise ValueError(输入值错误)自定义异常通过自定义异常我们可以不用拘泥于Python自带的异常错误类型定义更多自己想要的错误类型精确的控制出错的时机和处理方式。自定义异常一般继承Exception或者BaseExceptionclass ShortInputException(Exception): def __init__(self, length, least_length): super().__init__() self.length length self.least_length least_length def __str__(self): return 您输入的长度为:{},最短长度为:{}.format(self.length, self.least_length) try: content input(请输入内容:) if len(content) 5: raise ShortInputException(len(content), 5) else: print(符合要求) except ShortInputException as e: print(e) 请输入内容:ASD 您输入的长度为:3,最短长度为:5参考文章python使用raise抛出自定义异常_CSDN-CSDN博客_python raise抛出异常【Python】raise主动抛出异常自定义异常_mjiansun的专栏-CSDN博客_python 主动抛出异常