博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
异常处理
阅读量:6457 次
发布时间:2019-06-23

本文共 2205 字,大约阅读时间需要 7 分钟。

基本语法

try:    被检测的代码块except 异常类型:    一旦检测到异常,就执行这个位置的逻辑
AttributeError    # 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性xIOError              # 输入/输出异常;基本上是无法打开文件ImportError       # 无法引入模块或包;基本上是路径问题或名称错误IndentationError  # 语法错误(的子类) ;代码没有正确对齐IndexError          # 下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5]KeyError          # 试图访问字典里不存在的键KeyboardInterrupt # Ctrl+C被按下NameError          # 使用一个还未被赋予对象的变量SyntaxError         # Python代码非法,代码不能编译(个人认为这是语法错误,写错了)TypeError         # 传入对象类型与要求的不符合UnboundLocalError # 试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,导致你以为正在访问它ValueError          # 传入一个调用者不期望的值,即使值的类型是正确的
常用异常
ArithmeticErrorAssertionErrorAttributeErrorBaseExceptionBufferErrorBytesWarningDeprecationWarningEnvironmentErrorEOFErrorExceptionFloatingPointErrorFutureWarningGeneratorExitImportErrorImportWarningIndentationErrorIndexErrorIOErrorKeyboardInterruptKeyErrorLookupErrorMemoryErrorNameErrorNotImplementedErrorOSErrorOverflowErrorPendingDeprecationWarningReferenceErrorRuntimeErrorRuntimeWarningStandardErrorStopIterationSyntaxErrorSyntaxWarningSystemErrorSystemExitTabErrorTypeErrorUnboundLocalErrorUnicodeDecodeErrorUnicodeEncodeErrorUnicodeErrorUnicodeTranslateErrorUnicodeWarningUserWarningValueErrorWarningZeroDivisionError
更多异常

异常类只能用来处理指定的异常情况,如果非指定异常则无法处理。

# 未捕获到异常,程序直接报错s = "hello"try:    int(s)except IndexError as e:    print(e)

except支持多分支

s = "hello"try:    int(s)except IndexError as e:    print(e)except KeyError as e:    print(e)except ValueError as e:    print(e)

万能异常,在python的异常中,有一个万能异常,即Exception,他可以捕获任意异常

s = "hello"try:    int(s)except Exception as e:    print(e)

注意:

  • 虽然有万能的处理机制,但仍需把能预测到的问题单独except 处理
  • 单独处理的所有内容都应该写在万能异常之前

else:没有异常的时候执行else中的代码

finally:不管代码是否异常,都会执行

s = "hello"try:    str(s)except KeyError as e:    print(e)except ValueError as e:    print(e)except Exception as e:    print(e)else:    print("try内代码块没有异常则执行我")finally:    print("无论异常与否,都会执行该模块,通常是进行清理工作")
# 主动触发异常try:    raise TypeError("类型错误")except Exception as e:    print(e)

异常处理的作用:

  1. 把错误处理和真正的工作分开来

  2. 代码更易组织,更清晰,复杂的工作任务更容易实现

  3. 毫无疑问,更安全了,不至于由于一些小的疏忽而使程序意外崩溃了

什么时候用异常处理?

  异常处理应该尽量少用,因为它本身就是你附加给你的程序的一种异常处理的逻辑,与你的主要的工作是没有关系的

  只有在有些异常无法预知的情况下,才应该加上异常处理,其他的逻辑错误应该尽量修正

 

转载于:https://www.cnblogs.com/believepd/p/9637240.html

你可能感兴趣的文章
copy_constructor 复制构造函数
查看>>
mysql主从同步原理+配置
查看>>
LockSupport的park和unpark的基本使用,以及对线程中断的响应性
查看>>
prometheus(version 2.0.0)系列之三
查看>>
redhat 配置xmanager
查看>>
为什么匿名内部类和局部内部类只能访问final变量
查看>>
day15:磁盘格式化和挂载
查看>>
centos7 安装docker
查看>>
js中的substr()与substring()方法的区别
查看>>
二进制相关
查看>>
Oracle Study之-AIX6.1构建Oracle 10gR2 RAC(1)
查看>>
放假回了
查看>>
Adb移植(一)简单分析
查看>>
Linux VNC server的安装及简单配置使用
查看>>
阿里宣布开源Weex ,亿级应用匠心打造跨平台移动开发工具
查看>>
Android项目——实现时间线程源码
查看>>
招商银行信用卡重要通知:消费提醒服务调整,300元以下消费不再逐笔发送短信...
查看>>
python全栈_002_Python3基础语法
查看>>
C#_delegate - 调用列表
查看>>
交换机二层接口access、trunk、hybird三种模式对VLAN的处理过程
查看>>