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 zero8,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:所有常用异常的父类
NameError TypeError- IndentationError
KeyboardInterrupt : ctrl + c 终止程序- 等等
- 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: 为啥要用jack2,
# 面向对象:继承
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
- 判断返回值为bool的语句
- 如果Bool语句返回值为False 那么引发AssertionError
>>> assert 1 == 0
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AssertionError
Python报错总结丶自定义报错的更多相关文章
- python中引入包的时候报错AttributeError: module 'sys' has no attribute 'setdefaultencoding'解决方法?
python中引入包的时候报错:import unittestimport smtplibimport timeimport osimport sysimp.reload(sys)sys.setdef ...
- Nginx优化_自定义报错页面
自定义返回给客户端的404错误页面 1. 优化前,客户端使用浏览器访问不存在的页面,会提示404文件未找到 client]# firefox http://192.168.4.5/xxxxx ...
- 记一次用python 的ConfigParser读取配置文件编码报错
记一次用python 的ConfigParser读取配置文件编码报错 ...... raise MissingSectionHeaderError(fpname, lineno, line)Confi ...
- urllib.request.urlopen(req).read().decode解析http报文报“utf-8 codec can not decode”错处理
老猿前期执行如下代码时报"'utf-8' codec can't decode byte"错,代码及错误信息如下: >>> import urllib.reque ...
- maven项目检出后报错(包括编译报错和运行报错)的常见检查处理方式
maven项目检出后报错(包括编译报错和运行报错)的常见检查处理方式: 1.更改项目的jdk为我们安装的jdk2.更改build配置里的 output folder 目录为 xxx项目名/target ...
- 不知道哪里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 ...
- pom.xml内容没有错,但一直报错红叉 解决办法
转自:http://www.cnblogs.com/sxdcgaq8080/p/5590254.html [maven] pom.xml内容没有错,但一直报错红叉 解决办法 1.首先看一下下面的这两个 ...
- LayaIDE 报typescript编译版本不一致的错
LayaIDE 报typescript编译版本不一致的错 文件 -> 首选项->用户设置那里修改下 settings.json // 将设置放入此文件中以覆盖默认设置 { "ty ...
- Mysql报错注入之floor报错详解
一.简述 利用 select count(*),(floor(rand(0)*2))x from table group by x,导致数据库报错,通过 concat 函数,连接注入语句与 floor ...
随机推荐
- 最后执行finally
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Material Icons 查找的替代办法
1 问题 1.1 国内访问 google 困难,众所周知 1.2 在平时的工作中使用 Material Icons 如何查询呢 2 办法 2.1 github.com 把包 download 2.2 ...
- RX232串口发送
在进行工程调试的时候有时候需要对变量进行观察,SingnaTap II Logic Analyzer 只能对管脚进行观察,所以要观察内部的变量必须把内部的变量进行输出.一种方法是直接把变量定义成管脚通 ...
- 8月清北学堂培训 Day1
今天是赵和旭老师的讲授~ 动态规划 动态规划的基本思想 利用最优化原理把多阶段过程转化为一系列单阶段问题,利用各阶段之间的关系,逐个求解. 更具体的,假设我们可以计算出小问题的最优解,那么我们凭借此可 ...
- Spring框架AOP
aop技术是面向切面编程思想,作为OOP的延续思想添加到企业开发中,用于弥补OOP开发过程中的缺陷而提出的编程思想.AOP底层也是面向对象:只不过面向的不是普通的Object对象,而是特殊的AOP对象 ...
- XXE外部实体注入漏洞——PHP
前言 XXE Injection即XML External Entity Injection,也就是XML外部实体注入攻击.漏洞是在对非安全的外部实体数据进行处理时引发的安全问题. 在XML1.0标准 ...
- Mac 内存清理
1.清理前后的对比 清理前: 清理后: 内存多了20G 2.思路 首先,我先看了很多人的经验贴,按照他们的路子查到最后,并没有找到他们指出的大文件. 很显然,Mac的使用方式不同,其内存分配肯定也会不 ...
- 【English】What is a Java StringWriter, and when should I use it?(转帖)
转帖地址:http://www.it1352.com/989366.html Question: What is a Java StringWriter, and when should I use ...
- 模糊C均值聚类-FCM算法
FCM(fuzzy c-means) 模糊c均值聚类融合了模糊理论的精髓.相较于k-means的硬聚类,模糊c提供了更加灵活的聚类结果.因为大部分情况下,数据集中的对象不能划分成为明显分离的簇,指派一 ...
- SQL-W3School-高级:SQL RIGHT JOIN 关键字
ylbtech-SQL-W3School-高级:SQL RIGHT JOIN 关键字 1.返回顶部 1. SQL RIGHT JOIN 关键字 RIGHT JOIN 关键字会右表 (table_nam ...