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

      

  

  

 

Python报错总结丶自定义报错的更多相关文章

  1. python中引入包的时候报错AttributeError: module 'sys' has no attribute 'setdefaultencoding'解决方法?

    python中引入包的时候报错:import unittestimport smtplibimport timeimport osimport sysimp.reload(sys)sys.setdef ...

  2. Nginx优化_自定义报错页面

    自定义返回给客户端的404错误页面 1. 优化前,客户端使用浏览器访问不存在的页面,会提示404文件未找到 client]# firefox http://192.168.4.5/xxxxx      ...

  3. 记一次用python 的ConfigParser读取配置文件编码报错

    记一次用python 的ConfigParser读取配置文件编码报错 ...... raise MissingSectionHeaderError(fpname, lineno, line)Confi ...

  4. urllib.request.urlopen(req).read().decode解析http报文报“utf-8 codec can not decode”错处理

    老猿前期执行如下代码时报"'utf-8' codec can't decode byte"错,代码及错误信息如下: >>> import urllib.reque ...

  5. maven项目检出后报错(包括编译报错和运行报错)的常见检查处理方式

    maven项目检出后报错(包括编译报错和运行报错)的常见检查处理方式: 1.更改项目的jdk为我们安装的jdk2.更改build配置里的 output folder 目录为 xxx项目名/target ...

  6. 不知道哪里alert undefined 用下面的语句是js报错.F12能提示报错的地方window.alert=function(aa){ if (typeof (aa)"undefined"){ throw "就是这";}};

    不知道哪里alert undefined 用下面的语句是js报错.F12能提示报错的地方 var oldalert=window.alert; window.alert=function(aa){ i ...

  7. pom.xml内容没有错,但一直报错红叉 解决办法

    转自:http://www.cnblogs.com/sxdcgaq8080/p/5590254.html [maven] pom.xml内容没有错,但一直报错红叉 解决办法 1.首先看一下下面的这两个 ...

  8. LayaIDE 报typescript编译版本不一致的错

    LayaIDE 报typescript编译版本不一致的错 文件 -> 首选项->用户设置那里修改下 settings.json // 将设置放入此文件中以覆盖默认设置 { "ty ...

  9. Mysql报错注入之floor报错详解

    一.简述 利用 select count(*),(floor(rand(0)*2))x from table group by x,导致数据库报错,通过 concat 函数,连接注入语句与 floor ...

随机推荐

  1. [Debug] Dev tool Pause on caught exception

    Chrome dev tool has "Pasue on caught exceptions" which is useful when there is expection t ...

  2. 组件化网页开发 / 步骤一 · 4-4 匹配HTML标签

    组件化网页开发 / 步骤一 · 4-4 匹配HTML标签

  3. 外网可以反问lxr

    , 'baseurl_aliases' => 174       [ 'http://172.168.2.4/lxr' 175       , 'http://mydomain/lxr' 176 ...

  4. 用MFC构造DIRECTX应用框架

    一. MFC类库与DirectXSDK Microsoft DirectX SDK是开发基于 Windows平台游戏的一个软件开发工具,其主要功能主要包括在五个组件中: DirectDraw. Dir ...

  5. codeforces814E

    https://lunch.blog.luogu.org/cf814e-an-unavoidable-detour-for-homedp-ji-shuo-post https://blog.csdn. ...

  6. let和const关键字

    一:let 关键字 1.作用: - 与var类似, 用于声明一个变量 2.特点 - 在块作用域内有效 - 不能重复声明 - 不会预处理, 不存在提升 3.应用 - 循环遍历加监听 - 使用let取代v ...

  7. 安装curl依赖库后yum不能使用问题解决

    安装curl 1)  进入/home目录下,解压curl-7.54.0.tar.gz [root@localhost home]# tar zxvf curl-7.54.0.tar.gz 2)  依次 ...

  8. Jmeter Web 性能测试入门 (二):Fiddler 抓取 http/https 请求

    jmeter自带了拦截request的功能,并且也有对应的tool:badboy 可以用.但由于我经常做移动端的项目,个人还是习惯用fiddler来收集request. 官网下载并安装Fiddler ...

  9. 性能优化 | 30个Java性能优化技巧,你会吗?

    在Java程序中,性能问题的大部分原因并不在于Java语言,而是程序本身.养成良好的编码习惯非常重要,能够显著地提升程序性能. 1.尽量在合适的场合使用单例 使用单例可以减轻加载的负担,缩短加载的时间 ...

  10. [go]grpc远程接口调用实现

    // grpc序列化/反序列化成对应语言的对象 // 1.写idl(数据类型+方法) // 2.生成对应语言的序列化/反序列化代码 // 3.方法需要自己实现 // 环境(将gopath/bin加入p ...