#错误与异常
#错误主要是语法上的错误
# prinnt("no") #拼写错误 NameError: name 'prinnt' is not defined
print("yes"); # 多加了分号然而并没有错
# print("no")#中文输入法 IndentationError: unexpected indent
#异常是指语法正确的情况下,会在运行期间进行报错
#num = 1/0 这是每一种编程语言讲到异常都会使用这个例子 eroDivisionError: division by zero
#b = num+1 num变量没有进行定义 NameError: name 'num' is not defined
# '2'+2 TypeError: Can't convert 'int' object to str implicitly
print(int('2')+2)
# 2+'2' TypeError: unsupported operand type(s) for +: 'int' and 'str'
b = str(2)+'2'
print(b,type(b))
yes
4
22 <class 'str'>
In [20]:
"""
首先,执行try子句(在关键字try和关键字except之间的语句)
如果没有异常发生,忽略except子句,try子句执行后结束。
如果在执行try子句的过程中发生了异常,那么try子句余下的部分将被忽略。如果异常的类型和 except 之后的名称相符,那么对应的except子句将被执行。最后执行 try 语句之后的代码。
如果一个异常没有与任何的except匹配,那么这个异常将会传递给上层的try中。
一个 try 语句可能包含多个except子句,分别来处理不同的特定的异常。最多只有一个分支会被执行
#那么出现了异常的时候应该怎么进行处理
"""
首先,执行try子句(在关键字try和关键字except之间的语句)
如果没有异常发生,忽略except子句,try子句执行后结束。
如果在执行try子句的过程中发生了异常,那么try子句余下的部分将被忽略。如果异常的类型和 except 之后的名称相符,那么对应的except子句将被执行。最后执行 try 语句之后的代码。
如果一个异常没有与任何的except匹配,那么这个异常将会传递给上层的try中。
一个 try 语句可能包含多个except子句,分别来处理不同的特定的异常。最多只有一个分支会被执行
"""
while True:
try:
x = int(input("Please enter a number: "))
break
except ValueError:
print("Oops! That was no valid number. Try again ")
Please enter a number: a
Oops! That was no valid number. Try again
Please enter a number: 'a'
Oops! That was no valid number. Try again
Please enter a number: 2
In [22]:
import sys
try:
f = open('myfile.txt')
s = f.readline()
i = int(s.strip())
except OSError as err:
print("OS error: {0}".format(err))
except ValueError:
print("Could not convert data to an integer.")
except (RuntimeError, TypeError, NameError):
pass
except:
print("Unexpected error:", sys.exc_info()[0])
OS error: [Errno 2] No such file or directory: 'myfile.txt'
try except 语句还有一个可选的else子句,如果使用这个子句,那么必须放在所有的except子句之后。这个子句将在try子句没有发生任何异常的时候执行。
Python 使用 raise 语句抛出一个指定的异常。例如:
In [23]:
raise NameError('Koeb')
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-23-7fbd1276157a> in <module>()
----> 1 raise NameError('Koeb')
NameError: Koeb
自定义异常
In [25]:
class MyError(Exception):
def __init__(self, value):
self.value = value
def __str__(self):
return repr(self.value)
raise MyError("oh shit")
---------------------------------------------------------------------------
MyError Traceback (most recent call last)
<ipython-input-25-05e8a67aef87> in <module>()
4 def __str__(self):
5 return repr(self.value)
----> 6 raise MyError("oh shit")
MyError: 'oh shit'
Python基础入门(错误与异常)
猜你喜欢
转载自blog.csdn.net/weixin_38452632/article/details/83615335
今日推荐
周排行