# 日志模块
import logging
import traceback
# 引入日志
logging.basicConfig(filename='log_record.txt',
level=logging.DEBUG, filemode='w', format='[%(asctime)s] [%(levelname)s] >>> %(message)s',
datefmt='%Y-%m-%d %I:%M:%S')
try:
print(a+1) # 放主要代码
except Exception as e:
logging.error("Main program error:")
logging.error(e)
logging.error(traceback.format_exc())
python常见错误(exception)
在Python中,有许多常见的错误类型,其中一些包括:
SyntaxError:语法错误,通常是由于代码中的拼写错误、缺少括号或其他语法问题引起的。这些错误会在代码解析时立即触发。
IndentationError:缩进错误,通常是由于不一致的缩进引起的。在Python中,缩进非常重要,因为它表示代码块的范围。
NameError:名称错误,通常是由于引用了未定义的变量或函数引起的。这可能是由于拼写错误或作用域问题导致的。
TypeError:类型错误,通常是由于将不兼容的数据类型进行操作引起的。例如,尝试将整数与字符串相加会导致类型错误。
ValueError:值错误,通常是由于传递给函数的参数值不合法引起的。例如,尝试将无效的字符串转换为整数会引发值错误。
IndexError:索引错误,通常是由于尝试访问列表、元组或其他序列类型中不存在的索引引起的。例如,访问超出列表范围的索引会引发索引错误。
KeyError:键错误,通常是由于尝试在字典中查找不存在的键引起的。如果键不存在于字典中,将引发键错误。
FileNotFoundError:文件未找到错误,通常是由于尝试打开或操作不存在的文件引起的。这可能是由于文件路径错误或文件不存在的原因引起的。
ZeroDivisionError:除以零错误,通常是由于尝试在除法操作中将分母设置为零引起的。
AttributeError:属性错误,通常是由于尝试访问对象上不存在的属性或方法引起的。
ImportError:导入错误,通常是由于尝试导入不存在的模块或名称引起的。
RuntimeError:运行时错误,通常是由于逻辑错误或其他未知原因引起的。这通常需要更深入的调试。
这些是Python中一些常见的错误类型,但并不限于这些。当你在编写代码时,要小心捕获和处理这些错误,以提高程序的稳定性和可靠性。使用 try 和 except 块来捕获和处理异常是一种有效的方式
当然也可以直接使用:
while(True):
try:
m,n = map(int,input().split())
代码块
except: # 不指明任何错误,就是会捕获任何错误
break
但是不推荐使用全部捕获,因为会导致捕获其他错误,如当出现下标越界错误,也会被捕获,中止代码,但却不会报错,找错误是件很痛苦的事情,特别当代码多的时候。
原文链接:https://blog.csdn.net/m0_73765519/article/details/132710827
下面有个小列子:输入非数字 就报错,可以用异常处理解决
报错解决:
把 n = int(input('输入:1石头,2剪刀,3布: ')) 拆开写,
然后加上 try except,异常部分走except,重新输入即可
import random
while True:
computer = random.randint(1,3)#生成1到3随机整数
user = input('输入:1石头,2剪刀,3布: ')
try:
#n = int(input('输入:1石头,2剪刀,3布: '))
n = int(user)
if n == computer :
print(f' 平局,对方{computer}')
elif (n == 1 and computer == 2) or (n == 2 and computer == 3) or (n == 3 and computer == 1):#or和()之间要有空格,不然不执行代码
print(f'你赢了!!,对方{computer}')
elif n >=4:
print(f'请出123石头剪刀布!!,对方{computer}')
elif user =='' :
print('请出拳!')
elif n == 0:
print('游戏结束!!')
break
else:
print(f'你输了!!,对方{computer}')
except ValueError:
print('请重新输入123或输入0退出:')
一个try 可以有多个except:但是每次打印结果只显示其中一个except下的报错
try:
dic = {'a':1}
lis = [0,3]
print(lis[3])#出错!列表索引异常 list index out of range
print(1)
print(dic['python66'])
except NameError as e:
print('出错!打印未定义变量',e)
except ZeroDivisionError as e:
print('出错!除以0',e)
except IndexError as e:
print('出错!列表索引异常',e)
except KeyError as e:
print('出错!字典取值异常',e)
except:
print('未知异常')
异常类型:
参考Python学习 -- 异常分类 - 知乎