Python异常与程序调试 |
您所在的位置:网站首页 › 程序调试中常见的错误有哪些方面 › Python异常与程序调试 |
1、异常是什么
问题和错误、网络错误、系统错误 还有不可预料的情况,比如文件不存在、空间满了、通讯超时等等 Python的常见异常 ZeroDivisionError:比如0做除数 NameError:比如变量还没有定义的时候使用变量 TypeError:比如字符串连接整数 1.1 Python的捕获和异常处理语法try: 程序执行语句块 except Exception as 别名: 异常处理语句块 (except可以出现多次) … else: 无异常时处理语句块 finally: 必须要处理的语句块 (try:异常的捕获,except异常语句,finally断开数据库连接) 比如说捕获未被定义的变量b,NameError try: a = b + 1 except NameError as e: print(type(e)) print(e) print('2')
简化代码可以将异常语句写在小括号里二合为一 try: print(10 / 0) a = b + 1 except (NameError, ZeroDivisionError) as e: print(type(e)) print(e) except Exception as e: print(e) print('2')无异常出现时else被执行,若有异常则被捕获,不执行else try: a = 1+1 # print(10 / 0) # a = b + 1 except (NameError, ZeroDivisionError) as e: print(type(e)) print(e) except Exception as e: print(e) else: print("else") print('2')finally语句,不管有没有异常,finally里面的语句都会被执行 (所以finally语句中一般放入关闭资源的一些语句) try: a = 1+1 # print(10 / 0) # a = b + 1 except (NameError, ZeroDivisionError) as e: print(type(e)) print(e) except Exception as e: print(e) else: print("else") finally: print("finallly") print('2')python中所有的异常都是类,都是Exception的子类 (所以首字母都是大写的) 异常时需要事先定义然后才能使用的,python预先定义好的可以直接使用 一些常见的python内置异常如下: 1.2 主动抛出异常raise 若捕获到了不知道如何处理的异常,我希望返回给调用我的人去处理 比如上面代码,可以将raise加在Exception语句后面,捕获异常然后将异常抛出,raise后面可以不带参数 raise后面带参数的话,可以按照我们的需求去抛出我们期望的类型,供调用者去处理,相当于将类实例化(name加小括号就相当于将类实例化) try: a = 1 + 1 # print(10 / 0) # a = b + 1 a = int('abc') except (NameError, ZeroDivisionError) as e: print(type(e)) print(e) except Exception as e: print(e) print(type(e)) raise NameError('这是一个valueError') else: print("else") finally: print("finallly") print('2') 1.3 创建自定义异常解决一些特有的异常 先定义 class TranError(Exception): def __init__(self, errorCode=500000, message='tranError'): self.errorCode = errorCode self.message = message def __str__(self): return "[%d] %s" %(self.errorCode, self.message)将定义引用进来然后使用, from ch8.TranError import TranError try: a = 1 + 1 raise TranError(500001, 'tranError') except (NameError, ZeroDivisionError) as e: print(type(e)) print(e) except Exception as e: print(e) print(type(e)) else: print("else") finally: print("finallly") print('2')debug:对程序调试的一种方法和能力 断点:让程序停下来的那个点(在行号点一下,出现红色) 比如在第7行停下来 点击Step Over可以让程序一行一行运行 断点跳转 可以设置多个断点,调试完直接跳到下一个断点 (点击Run to Cursor ) 每个开发工具都会有各自的调试方法,依赖于开发工具 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |