博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python学习之路13——异常处理
阅读量:5840 次
发布时间:2019-06-18

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

一、异常处理

    1、异常基础

    在编程的过程中为了增加友好性,在程序出现bug时一般不会将错误信息显示给用户。

    而是实现一个提示的页面,通俗来讲就是不让用户看到程序报错的情况。

#!/user/bin/env ptyhon# -*- coding:utf-8 -*-# Author: VisonWong#异常处理list = ['hello','world']# print(list[2])# Traceback (most recent call last):#   File "E:/Python/PythonLearing/error/单个异常.py", line 9, in 
# print(list[2])# IndexError: list index out of rangetry: list[2]except IndexError as e: print("IndexError:",e)# IndexError list index out of range

    上面程序表示try里面的代码,如果出现IndexError这种代码,则执行except下面的代码,不会把错误信息显示给用户,程序也不会停止;

    目前只能处理IndexError这一种异常,想处理多种异常可以这么写:

1 #!/user/bin/env ptyhon 2 # -*- coding:utf-8 -*- 3 # Author: VisonWong 4  5 # 多种异常处理 6  7 list = ["hello", "world"] 8 dict = {
"vison":1,"wong":2} 9 message= "Hello word"10 try:11 #如果程序片段有多个异常,碰到第一个异常就会跳转到下面except执行12 list[2] #IndexError异常实例13 dict["wong1"] #KeyError异常实例14 int(message) #ValueError异常实例15 16 except IndexError as e:17 print("IndexError", e)18 19 except KeyError as e:20 print("KeyError", e)21 22 except ValueError as e:23 print("ValueError", e)24 25 26 # IndexError list index out of range

 

    万能异常处理,在Python中有一个万能异常Exception,可以捕获任意异常。

1 #!/user/bin/env ptyhon 2 # -*- coding:utf-8 -*- 3 # Author: VisonWong 4  5  6 # 万能异常处理 7  8 message = "HelloWorld" 9 try:10     int(message)11 except Exception as e:12     print("Error:", e)13 14 15 # Error: invalid literal for int() with base 10: 'HelloWorld'

    常用异常:

    • AttributeError  试图访问一个对象没有的属性,比如foo.x,但是foo没有属性x

    • IOError   输入/输出异常;基本上是无法打开文件

    • ImportError   无法引入模块或包;基本上是路径问题或名称错误

    • IndentationError   语法错误(的子类);代码没有正确对齐

    • IndexError   下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5]

    • KeyError   试图访问字典里不存在的键

    • KeyboardInterrupt   Ctrl+C被按下

    • NameError   使用一个还未被赋予对象的变量

    • SyntaxError   Python代码语法错误

    • TypeError   传入对象类型与要求的不符合

    • UnboundLocalError   试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,导致你以为正在访问它

    • ValueError   传入一个调用者不期望的值,即使值的类型是正确的,如字符串转数字类型

          更多异常

ArithmeticErrorAssertionErrorAttributeErrorBaseExceptionBufferErrorBytesWarningDeprecationWarningEnvironmentErrorEOFErrorExceptionFloatingPointErrorFutureWarningGeneratorExitImportErrorImportWarningIndentationErrorIndexErrorIOErrorKeyboardInterruptKeyErrorLookupErrorMemoryErrorNameErrorNotImplementedErrorOSErrorOverflowErrorPendingDeprecationWarningReferenceErrorRuntimeErrorRuntimeWarningStandardErrorStopIterationSyntaxErrorSyntaxWarningSystemErrorSystemExitTabErrorTypeErrorUnboundLocalErrorUnicodeDecodeErrorUnicodeEncodeErrorUnicodeErrorUnicodeTranslateErrorUnicodeWarningUserWarningValueErrorWarningZeroDivisionError
更多异常

    2、异常的其他结构

1 #异常的其他结构 2   3 try: 4     # 主代码块 5     pass 6 except KeyError as e: 7     # 异常时,执行该块 8     pass 9 else:10     # 主代码块执行完,执行该块11     pass12 finally:13     # 无论异常与否,最终执行该块14     pass

二、自定义异常

    1、主动触发异常

1 #!/user/bin/env ptyhon 2 # -*- coding:utf-8 -*- 3 # Author: VisonWong 4  5  6 # 主动触发异常 7  8 try: 9     raise Exception('错误了。。。')10 except Exception as e:11     print(e)12 13 # 错误了。。。

 

 

      2、自定义异常

1 #!/user/bin/env ptyhon 2 # -*- coding:utf-8 -*- 3 # Author: VisonWong 4  5 # 自定义异常 6  7 class VisonException(Exception): 8     def __init__(self, msg): 9         self.message = msg10 11     def __str__(self):12         return self.message13 14 15 error = VisonException("我的异常")16 17 try:18     raise error19 20 except VisonException as e:21     print(e)22 23 # 我的异常

 

转载于:https://www.cnblogs.com/visonwong/p/9154091.html

你可能感兴趣的文章
1303: Decimal
查看>>
奥数 --- 找规律 + 总结
查看>>
1.4 文件操作
查看>>
01 如何在.NET中使用PB12.5的datawindow - 消失的DW.NET
查看>>
《NodeJS开发指南》第五章微博实例开发总结
查看>>
数据类型的转换
查看>>
js-字符串比较
查看>>
HDU-3787(字符串模拟)
查看>>
java_Properties写入文件
查看>>
Django事务
查看>>
模板库
查看>>
字符串比较函数总结
查看>>
MySQL - 四
查看>>
Mybatis介绍
查看>>
创建索引之代码开发
查看>>
DIY 使用指导
查看>>
node 基本框架2
查看>>
转化URL地址
查看>>
Java创建对象的几种方式
查看>>
java笔记
查看>>