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

posted on 2017-12-27 16:34  cdekelon  阅读(297)  评论(0编辑  收藏  举报

导航