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. springboot2.0入门(八)-- profile启动文件配置

    一.不同环境使用不同配置文件 将application.yml文件拷贝三份,在文件末尾分别对应开发/生产/测试,dev/prod/test/文件夹,其中application.yml 中默认激活开发环 ...

  2. Python操作MySQL数据库,插入重复数据

    sql = "INSERT  INTO test_c(id,name,sex)values(%s,%s,%s)" param = (1,'AJ','MAN') n = cursor ...

  3. DP的优化

    参考资料: 李煜东<算法竞赛进阶指南> 斜率优化 形如: \(f[i] = min\{f[j]+val(i,j)\}\)的dp,多项式\(val(i,j)\)包含\(i,j\)的乘积项 引 ...

  4. iptables防火墙--------基本概念

    iptables按照规则进行处理,而iptables的规则存储在内核空间的信息包过滤表中,这些规则分别指定了源地址.目的地址.传输协议(TCP.UDP.ICMP)和服务类型(如HTTP.FTP和SMT ...

  5. codeforces#1234F. Yet Another Substring Reverse(子集dp)

    题目链接: https://codeforces.com/contest/1234/problem/F 题意: 给出一个只包含前20个小写字母的字符串,一次操作可以让一段字符颠倒顺序 最多一次这样的操 ...

  6. ie和vuex的兼容

    vuex requires a Promise polyfill in this browser. 在ie中的报错 需要安卓babel-polyfill,  然后在webpack.base.confi ...

  7. 基于Ryu REST API的VLAN实现

    目录 0.预备知识 1.实验内容 2.编写脚本addflow.sh一步实现流表下发 3.使用api查看流表 4.实验结果 0.预备知识 ryu控制器的API文档:ryu.app.ofctl_rest ...

  8. Js中Array常用方法小结

    说起Array的方法,不免让人皱一下眉头,下面我们从增删改查角度依次来总结. 1.增 push: 将传入的参数 ,插入数组的尾部,并返回新数组的长度.不管传入参数为一个值还是一个数组,都作为插入数组的 ...

  9. oracle中查询某个库中所有的表以及所占的表空间大小

    1. 查某一用户下的表select SEGMENT_NAME,TABLESPACE_NAME,sum(BYTES/1024/1024)||'M' from USER_extents where SEG ...

  10. 蜗牛圈圈-时尚智能的运动计时App

    Duang! 各类运动爱好者的福音来啦! 蜗牛圈圈-最智能的圈速计时助手 扫描二维码下载体验 [产品简介] -蜗牛圈圈是一款专业的圈速计时工具,帮助您获得整个运动过程中的各项数据,保存记录,分享激情. ...