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