python异常处理中不会用到的关键字,python异常处理关键字
1.什么是不正常?
当一个异常程序运行时,这是一个错误发生的信号。异常发生后,异常后的代码不会被执行。在python中,错误触发的异常如下:
x
回溯(最近一次呼叫):
文件“D:/py charm/code/exception-handling . py”,第153行,在模块中
x
名称错误:未定义名称“x”
2.Python中异常的类型
# AttributeError试图访问一个对象没有的树,比如foo.x,但是foo没有属性x。
# IOError输入/输出异常;基本上打不开文件。
# ImportError无法导入模块或包;基本上就是路径问题或者名字不对。
# IndentationError语法错误(的子类);代码没有正确对齐。
# IndexError下标index超出序列边界,例如,当X只有三个元素,但试图访问x[5]时
# KeyError试图访问字典中不存在的键。
#键盘中断Ctrl C被按下。
# NameError使用了尚未分配给对象的变量。
# SyntaxError Python代码非法,代码无法编译(个人认为是语法错误,写的不对)
# TypeError传入的对象类型与预期的类型不匹配。
# UnboundLocalError试图访问一个没有被设置的局部变量,基本上是因为存在另一个同名的全局变量,导致你以为是在访问它。
# ValueError传入了调用方不期望的值,即使该值的类型正确。
3.异常处理
Python为每个异常定制了一种类型,然后为异常处理提供了特定的语法结构。
(1)尝试除
语法:
尝试:
检测到的代码块
例外类型除外:
一旦在try中检测到异常,就执行该位置的逻辑,例如:
导入操作系统
导入sysdef main():
OS . environ . set default( DJANGO _ SETTINGS _ MODULE , myblog.settings )
尝试:
从django.core.management导入执行命令行
除了作为exc的ImportError:
引发导入错误(
无法导入Django。你确定已经安装了吗?
在PYTHONPATH环境变量中可用。你有吗
“忘记激活虚拟环境了吗?”
)来自exc
执行命令行(sys.argv)
L=[登录,注册,退出]
对于I在列举(l,1):
print(i[0],i[1])
num=int(input( num:)#输入应该是1,2,3
打印(l[数字- 1])
#输入数字值4时出错:索引错误:列表索引超出范围
#带异常处理
L=[登录,注册,退出]
对于I在列举(l,1):
print(i[0],i[1])
尝试:
num=int(input(num:))
打印(l[数字- 1])
IndexError除外:#当IndexError发生时,执行以下语句
打印(“您输入的数字无效”)
#当我们将num值作为A输入时出错:value错误:以10为基数的int()的文本无效:“A”
L=[登录,注册,退出]
对于I在列举(l,1):
print(i[0],i[1])
尝试:
num=int(input(num:))
打印(l[数字- 1])
ValueError除外:#发生ValueError时执行下面的语句。
打印(“请输入一个数字”)
#多分支异常处理
L=[登录,注册,退出]
对于I在列举(l,1):
print(i[0],i[1])
尝试:
num=int(input(num:))
打印(l[数字-1])
除了值错误:
打印(“请输入一个数字”)
除了索引错误:
打印(“您输入的数字无效”)
#通用异常
L=[登录,注册,退出]
对于I在列举(l,1):
print(i[0],i[1])
尝试:
num=int(input(num:))
打印(l[数字- 1])
作为变量名的例外:
打印(类型(变量名),变量名,变量名。__回溯_ _。tb_lineno)
# num输入是a: class“值错误”基数为10的int()的无效文字:“a”70
# num输入为4:类“索引错误”列表索引超出范围71
注意:通用异常与其他分支配合使用:通用异常应该始终放在所有except的末尾。
(2)其他异常处理机制
1)
s1=你好
尝试:
int(s1)
除了e:
打印(e)
除了KeyError作为e:
打印(e)
除了值错误为e:
打印(e)
#作为e的例外情况除外:
#打印(e)
否则:
Print(如果try中的代码块没有异常,则执行我)
最后:
打印(无论是否异常都会执行此模块,通常是为了清洗)
例如:
L=[登录,注册,退出]
对于I在列举(l,1):
print(i[0],i[1])
尝试:
num=int(input(num:))
打印(l[数字- 1])
除了索引错误:
打印(“请输入一个数字”)
Else:# try中的代码正常执行,无异常时将执行else中的代码。
打印(执行else )
最后:#会执行无论如何都可以用于操作系统资源返回的工作。
打印(“最终执行”)
输入为1时的# num:登录
#其他行
#最终执行
# num输入为4:请输入一个数字。
#最终执行
2)主动抛出异常。
#主动抛出异常
#尝试:
# num=int(input())
# except例外:
# print(在异常发生后做点什么,然后让它抛出异常)
# raise #原封不动地在try语句中抛出异常。
#自定义异常
引发名称错误(“这是name error的异常”)
EvaException类(异常):
def __init__(self,msg):
self.msg=msg
引发EvaException(这是一个错误,有什么问题)
3)断言
#断言布尔值
断言为真
如果为假:
打印(1234234)
否则:
引发AssertionError # AssertionError
总结:
#异常处理的几种模式
#尝试/例外
# try/except/否则
#尝试/例外/否则/最后
#尝试/例外/最终
#尝试/最终
#尽可能少地使用异常处理
#能用逻辑规避的,就应该用代码逻辑规避。
#某个/某些句子应该被处理。
#最后,在外层添加一个大的异常处理
心有猛虎,细嗅蔷薇
1.什么是不正常?
当一个异常程序运行时,这是一个错误发生的信号。异常发生后,异常后的代码不会被执行。在python中,错误触发的异常如下:
x
回溯(最近一次呼叫):
文件“D:/py charm/code/exception-handling . py”,第153行,在模块中
x
名称错误:未定义名称“x”
2.Python中异常的类型
# AttributeError试图访问一个对象没有的树,比如foo.x,但是foo没有属性x。
# IOError输入/输出异常;基本上打不开文件。
# ImportError无法导入模块或包;基本上就是路径问题或者名字不对。
# IndentationError语法错误(的子类);代码没有正确对齐。
# IndexError下标index超出序列边界,例如,当X只有三个元素,但试图访问x[5]时
# KeyError试图访问字典中不存在的键。
#键盘中断Ctrl C被按下。
# NameError使用了尚未分配给对象的变量。
# SyntaxError Python代码非法,代码无法编译(个人认为是语法错误,写的不对)
# TypeError传入的对象类型与预期的类型不匹配。
# UnboundLocalError试图访问一个没有被设置的局部变量,基本上是因为存在另一个同名的全局变量,导致你以为是在访问它。
# ValueError传入了调用方不期望的值,即使该值的类型正确。
3.异常处理
Python为每个异常定制了一种类型,然后为异常处理提供了特定的语法结构。
(1)尝试除
语法:
尝试:
检测到的代码块
例外类型除外:
一旦在try中检测到异常,就执行该位置的逻辑,例如:
导入操作系统
导入sysdef main():
OS . environ . set default( DJANGO _ SETTINGS _ MODULE , myblog.settings )
尝试:
从django.core.management导入执行命令行
除了作为exc的ImportError:
引发导入错误(
无法导入Django。你确定已经安装了吗?
在PYTHONPATH环境变量中可用。你有吗
“忘记激活虚拟环境了吗?”
)来自exc
执行命令行(sys.argv)
L=[登录,注册,退出]
对于I在列举(l,1):
print(i[0],i[1])
num=int(input( num:)#输入应该是1,2,3
打印(l[数字- 1])
#输入数字值4时出错:索引错误:列表索引超出范围
#带异常处理
L=[登录,注册,退出]
对于I在列举(l,1):
print(i[0],i[1])
尝试:
num=int(input(num:))
打印(l[数字- 1])
IndexError除外:#当IndexError发生时,执行以下语句
打印(“您输入的数字无效”)
#当我们将num值作为A输入时出错:value错误:以10为基数的int()的文本无效:“A”
L=[登录,注册,退出]
对于I在列举(l,1):
print(i[0],i[1])
尝试:
num=int(input(num:))
打印(l[数字- 1])
ValueError除外:#发生ValueError时执行下面的语句。
打印(“请输入一个数字”)
#多分支异常处理
L=[登录,注册,退出]
对于I在列举(l,1):
print(i[0],i[1])
尝试:
num=int(input(num:))
打印(l[数字-1])
除了值错误:
打印(“请输入一个数字”)
除了索引错误:
打印(“您输入的数字无效”)
#通用异常
L=[登录,注册,退出]
对于I在列举(l,1):
print(i[0],i[1])
尝试:
num=int(input(num:))
打印(l[数字- 1])
作为变量名的例外:
打印(类型(变量名),变量名,变量名。__回溯_ _。tb_lineno)
# num输入是a: class“值错误”基数为10的int()的无效文字:“a”70
# num输入为4:类“索引错误”列表索引超出范围71
注意:通用异常与其他分支配合使用:通用异常应该始终放在所有except的末尾。
(2)其他异常处理机制
1)
s1=你好
尝试:
int(s1)
除了e:
打印(e)
除了KeyError作为e:
打印(e)
除了值错误为e:
打印(e)
#作为e的例外情况除外:
#打印(e)
否则:
Print(如果try中的代码块没有异常,则执行我)
最后:
打印(无论是否异常都会执行此模块,通常是为了清洗)
例如:
L=[登录,注册,退出]
对于I在列举(l,1):
print(i[0],i[1])
尝试:
num=int(input(num:))
打印(l[数字- 1])
除了索引错误:
打印(“请输入一个数字”)
Else:# try中的代码正常执行,无异常时将执行else中的代码。
打印(执行else )
最后:#会执行无论如何都可以用于操作系统资源返回的工作。
打印(“最终执行”)
输入为1时的# num:登录
#其他行
#最终执行
# num输入为4:请输入一个数字。
#最终执行
2)主动抛出异常。
#主动抛出异常
#尝试:
# num=int(input())
# except例外:
# print(在异常发生后做点什么,然后让它抛出异常)
# raise #原封不动地在try语句中抛出异常。
#自定义异常
引发名称错误(“这是name error的异常”)
EvaException类(异常):
def __init__(self,msg):
self.msg=msg
引发EvaException(这是一个错误,有什么问题)
3)断言
#断言布尔值
断言为真
如果为假:
打印(1234234)
否则:
引发AssertionError # AssertionError
总结:
#异常处理的几种模式
#尝试/例外
# try/except/否则
#尝试/例外/否则/最后
#尝试/例外/最终
#尝试/最终
#尽可能少地使用异常处理
#能用逻辑规避的,就应该用代码逻辑规避。
#某个/某些句子应该被处理。
#最后,在外层添加一个大的异常处理
来自
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。