About try...expect...else
From https://www.cnblogs.com/Lival/p/6203111.html
1. 我们把可能发生错误的语句放在try模块里,用except来处理异常。except可以处理一个专门的异常,也可以处理一组圆括号中的异常,如果except后没有指定异常,则默认处理所有的异常。每一个try,都必须至少有一个except
2. try ....except...else 语句,当没有异常发生时,else中的语句将会被执行。
3. 处理一组异常可以这样写(其中e代表异常的实例):
a=10
b=0
try:
c = b/ a
print c
except (IOError ,ZeroDivisionError),e:
print e
else:
print "no error"
print "done"
一个异常可以带上参数,可作为输出的异常信息参数。
你可以通过except语句来捕获异常的参数,如下所示:
try:
正常的操作
......................
except ExceptionType, Argument:
你可以在这输出 Argument 的值...
4. raise 引发一个异常
|
1
2
3
4
5
|
inputValue=input("please input a int data :")
if type(inputValue)!=type(1):
raise ValueError
else:
print inputValue
|
5. try ...finally
- 无论异常是否发生,在程序结束前,finally中的语句都会被执行。
- finally语句也可以和except语句一起使用。
a=10
b=0
try:
print a/b
except:
print "error"
finally:
print "always excute"
6. 自定义一个MyException类,继承Exception。如果输入的数字小于10,就引发一个MyException异常:
class MyException(Exception):
def __init__(self,message):
Exception.__init__(self)
self.message=message
a=input("please input a num:")
if a<10:
try:
raise MyException("my excepition is raised ")
except MyException,e:
print e.message
Below is another example:
通过创建一个新的异常类,程序可以命名它们自己的异常。异常应该是典型的继承自Exception类,通过直接或间接的方式。
以下为与RuntimeError相关的实例,实例中创建了一个类,基类为RuntimeError,用于在异常触发时输出更多的信息。
在try语句块中,用户自定义的异常后执行except块语句,变量 e 是用于创建Networkerror类的实例。
class Networkerror(RuntimeError):
def __init__(self, arg):
self.args = arg
在你定义以上类后,你可以触发该异常,如下所示:
try:
raise Networkerror("Bad hostname")
except Networkerror,e:
print e.args
浙公网安备 33010602011771号