Python 【Debug排除程序故障】 – Python量化投资

Python 【Debug排除程序故障】

debug #排除程序故障 print()函数常和#号注释结合在一起用来debug 多行注释有两种快捷操作: 1、在需要注释的多行代码块前后加一组三引号”’ 2、选中代码后使用快捷键操作:Windows快捷键是ctrl+/,Mac为cmd+/,适用于本地编辑器) 一种异常处理的机制,可以在异常出现时即时捕获,然后内部消化掉,让程序继续运行 try…except…语句 Python的所有报错类型 https://www.runoob.com/python/python-exceptions.html #################################################################################### 总结 针对知识点不熟造成的bug,要记得多复习,查阅笔记,针对性地做练习掌握用法。 针对思维不清的bug,要多用print()函数和#注释一步步地排查错误。 针对容易被忽略的例外情况从而被动掉坑的bug,可以用try…except语句让程序顺利运行。 ################################################################################### BaseException: 包含所有built-in exceptions 所有内置异常的基类 它不应该被用户自定义类直接继承 Exception: 不包含所有的built-in exceptions, 只包含built-in, non-system-exiting exceptions, 像SystemExit类型的exception就不包含在里面。 所有内置的非系统退出类异常都派生自此类。 所有用户自定义异常也应当派生自此类 ############################################################################### try…except语句的用法(可带多个) try语句工作方式 1.执行try子句(在关键字try和关键字except之间的语句) 2.如果没有异常发生,忽略except子句,try子句执行后结束。 3.执行try子句异常,try子句余下的部分将被忽略 如果异常类型except 之后的名称相符,那么对应的except子句将被执行。 最后执行 try 语句之后的代码。 4.如果一个异常没有与任何的except匹配,那么这个异常将会传递给上层的try中 ############################################################################## try except 语句还有一个可选的else子句 使用这个子句,那么必须放在所有的except子句之后。 这个子句将在try子句没有发生任何异常的时候执行 name = 0 try : print (name) except NameError as a: print ( ‘ ——> ‘ ,a) else : print ( ‘ 在被检测代码块没有发生异常时执行 ‘ ) 优点: else 子句比把所有的语句都放在 try 子句里面要好, 这样可以避免一些意想不到的、而except又没有捕获的异常 try: name except NameError as a: #定制什么类型的异常 as print(‘——>’,a) ################################################################################# 不管 try 子句里面有没有发生异常,finally 子句都会执行 如果一个异常在 try 子句里(或者在 except 和 else 子句里)被抛出, 而又没有任何的 except 把它截住,那么这个异常会在 finally 子句执行后被抛出。 try :
d = {}
d[ ‘ name ‘ ] except Exception as e: print ( ‘ —-> ‘ , e) else : print ( ‘ 在被检测代码块没有发生异常时执行 ‘ ) finally : print ( ‘ 不管被检测的代码块有没有发生异常都会执行 ‘ ) print ( ‘ haha ‘ ) 执行结果: —-> ‘name’ 不管被检测的代码块有没有发生异常都会执行 haha ################################################################### import sys def main(): 1/ 0
name = 0 try : print (name)
main() except NameError as a: print ( ‘ ——> ‘ ,a) except : # 最后一个except子句可以忽略异常的名称,它将被当作通配符使用 print ( ‘ Unexpected error: ‘ ,sys.exc_info()[0]) 列子: print ( ‘ \n欢迎使用除法计算器!\n ‘ ) while True: try :
x = input( ‘ 请你输入被除数: ‘ )
y = input( ‘ 请你输入除数: ‘ )
z = float(x)/ float(y) print (x, ‘ / ‘ ,y, ‘ = ‘ ,z) break # 默认每次只计算一次,所以在这里写了 break。 except ZeroDivisionError: # 当除数为0时,跳出提示,重新输入。 print ( ‘ 0是不能做除数的! ‘ ) except ValueError: # 当除数或被除数中有一个无法转换成浮点数时,跳出提示,重新输入。 print ( ‘ 除数和被除数都应该是整值或浮点数! ‘ ) ############################################################################################################################ # 方式2:将两个(或多个)异常放在一起,只要触发其中一个,就执行所包含的代码。 # except(ZeroDivisionError,ValueError):    #except子句可以同时处理多个异常,这些异常将被放在一个括号里成为一个元组 #print(‘你的输入有误,请重新输入!’) # 方式3:常规错误的基类,假设不想提供很精细的提示,可以用这个语句响应常规错误。 # except Exception:               #except BaseException: # print(‘你的输入有误,请重新输入!’)https://www.cnblogs.com/CH-TNT/p/11332518.html

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
pandas
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论