zoukankan      html  css  js  c++  java
  • Python报错总结丶自定义报错

    Python报错总结:

    •  常见异常

    1,NameError: name 'a' is not defined:未定义函数名            
    2,IndentationError: unindent does not match any outer indentation level :代码缩进问题
    3,IndentationError: unexpected indent:代码缩进问题                 
    4,TypeError: %d format: a number is required, not str :类型错误
    5,SyntaxError: invalid syntax:语法错误
    6,ValueError: unsupported format character 'S' (0x53) at index 15:不支持此语法
    7,ZeroDivisionError: division by zero
    8,BUG:虫子
    9,程序打印一堆错误提示,抛出异常
    10,默认的异常处理动作是终止程序
    • 异常捕获

    语法:

    try:
      你觉得可能会发生错误的地方
    except 错误类型/所有错误:
      重新修改默认的出错动作
    else:
      没有异常,走这里
    finally:
      不管出错不出错都会走这里 

    1,异常捕获:一般错误代码就会执行报错,不会执行后续的代码,但是设定了异常捕获可以避免某些报错发生,而且可以继续执行代码 如下:

    try:
        1/0
    except  ZeroDivisionError:
        print('此处不可以除0')
    print('=========================')
    

    运行结果: 

    此处不可以除0
    =========================
    

    2,

    def func(name,age):
    	#name: str
    	#age: int
    	print('name: %s, age: %d' % (name,age))
    try:
    	func('jack','wang') #-> 已经报错了
    	#TypeError: func() missing 1 required positional argument: 'age'
    	#TypeError: %d format: a number is required, not str
    	#NameError: name 'a' is not defined
    except TypeError:
    	print('报错:此处调用函数为两个分别是:str,int') #错误
    except NameError:
    	print('报错:出现了未定义的变量')
    print('-------------')
    

    运行结果:

    报错:此处调用函数为两个分别是:str,int
    -------------
    

    3,except 后面不添加错误类型,默认匹配所有错误类型(精确不行,太模糊,很少有人这样用看自己情况)

    def func(name,age):
    	#name: str
    	#age: int
    	print('name: %s, age: %d' % (name,age))
    
    try:
    	func('jack')
    except:
    	print('调用函数报错,请检查函数调用方式是否正确')  

    运行结果:

    调用函数报错,请检查函数调用方式是否正确
    

    4,

    import os
    print(os.getcwd())
    print(os.listdir())
    try:
    	fp = open('1.txt','r',encoding='utf-8') #read 
    	#不存在就捕获,
    	#存在呢, 
    except FileNotFoundError:
    	print('文件此没有')
    else: #当你捕获的代码没有异常的时候,他会走这里
    	print('关闭文件')
    	fp.close() 
    finally: #不管报错不报错 都要走这里 #if..**else**..
    	print('结束了')
    print('------------')
    

    运行结果:

    E:python学习资料上课代码编写代码练习py
    ['1.txt', 'zhangan.py', 'zhangan1.py']
    关闭文件
    结束了
    ------------  
    • 手动抛出异常 

    1,raise TypeError('错误的描述'),直接终止代码运行。

    def func(name,age):
    	#name: str
    	#age: int
    	if name == 'jack':
    		raise TypeError('为啥要用jack')
    	else:
    		print('name: %s, age: %d' % (name,age))
    func('jack',16)
    print('-----------')
    

    运行结果:

    Traceback (most recent call last):
    File "e:/python学习资料/上课视屏/四阶段:面对对象/4-5-异常捕获/代码/5.py", line 8, in <module>
    func('jack',16)
    File "e:/python学习资料/上课视屏/四阶段:面对对象/4-5-异常捕获/代码/5.py", line 5, in func
    raise TypeError('为啥要用jack')
    TypeError: 为啥要用jack  
    • 自定义异常

    •  Exception:所有常用异常的父类
    1. NameError
    2. TypeError
    3. IndentationError
    4. KeyboardInterrupt  : ctrl + c 终止程序
    5. 等等
    • SystemExit:系统异常:ctrl + c 键盘信号

    1,

    class Mayerror(Exception):
        pass
    def func(name,age):
    	#name: str
    	#age: int
    	if name == 'jack':
    		raise Mayerror('为啥要用jack')
    	else:
    		print('name: %s, age: %d' % (name,age))
    func('jack',16)
    print('-----------')
    

    运行结果:

    Traceback (most recent call last):
      File "e:/python学习资料/上课代码编写/代码练习py/zhangan1.py", line 10, in <module>
        func('jack',16)
      File "e:/python学习资料/上课代码编写/代码练习py/zhangan1.py", line 7, in func
        raise Mayerror('为啥要用jack')
    __main__.Mayerror: 为啥要用jack
    

    2,   

    # 面向对象:继承
    class MyError(Exception):
    	def __init__(self,*arg,**args):
    		super(MyError,self).__init__(*arg)
    		print('错误码:',args['code_'])
    def func(name,age):
    	if name == 'jack':
    		raise MyError('为啥要用jack',code_=1)
    	else:
    		print('name: %s, age: %d' % (name,age))
    func('jack',16)
    print('-----------')
    

    运行结果: 

    错误码: 1
    Traceback (most recent call last):
      File "e:/python学习资料/上课视屏/四阶段:面对对象/4-5-异常捕获/代码/6.py", line 11, in <module>
        func('jack',16)
      File "e:/python学习资料/上课视屏/四阶段:面对对象/4-5-异常捕获/代码/6.py", line 8, in func
        raise MyError('为啥要用jack',code_=1)
    __main__.MyError: 为啥要用jack
    • 断言

    •  判断异常:assert
    1. 判断返回值为bool的语句
    2. 如果Bool语句返回值为False 那么引发AssertionError
      >>> assert 1 == 0
      Traceback (most recent call last):
        File "<stdin>", line 1, in <module>
      AssertionError
      

        

      

      

     

  • 相关阅读:
    深度学习优化方法比较
    调参
    Numpy/Pytorch之数据类型与强制转换
    numpy:维度问题
    js模板引擎-juicer
    js模板引擎-腾讯artTemplate 简洁语法例子
    canva绘制时钟
    js中的break ,continue, return
    JavaScript奇技淫巧44招
    数据类型
  • 原文地址:https://www.cnblogs.com/zhangan/p/10092094.html
Copyright © 2011-2022 走看看