zoukankan      html  css  js  c++  java
  • 基础知识回顾——异常处理

    Python用异常对象(exception object)来表示异常情况。遇到错误后,会引发异常,如果异常对象并未被处理或捕捉,程序就会用所谓的 回溯(Traceback, 一种错误信息)终止执行,因此程序可以通过异常处理来提高容错性。


    认识异常

     1.raise语句引发异常

    1 >>> raise Exception
    2 
    3 Traceback (most recent call last):
    4   File "<pyshell#0>", line 1,
    5   in <module> raise Exception Exception 

    2.遇到错误引发异常

    1 >>> 7/0
    2 
    3 Traceback (most recent call last):
    4   File "<pyshell#1>", line 1, in <module> 7/0
    5   ZeroDivisionError: integer division or modulo by zero 

    3.系统自带的内建异常类

    1 >>> import exceptions
    2 >>> dir(exceptions)
    3 
    4 ['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'BufferError', 'BytesWarning', 
    'DeprecationWarning', 'EOFError', 'EnvironmentError', 'Exception', 'FloatingPointError', 'FutureWarning',
    'GeneratorExit', 'IOError', 'ImportError', 'ImportWarning', 'IndentationError', 'IndexError', 'KeyError',
    'KeyboardInterrupt', 'LookupError', 'MemoryError', 'NameError', 'NotImplementedError', 'OSError', 'OverflowError',
    'PendingDeprecationWarning', 'ReferenceError', 'RuntimeError', 'RuntimeWarning', 'StandardError', 'StopIteration',
    'SyntaxError', 'SyntaxWarning', 'SystemError', 'SystemExit', 'TabError', 'TypeError', 'UnboundLocalError',
    'UnicodeDecodeError', 'UnicodeEncodeError', 'UnicodeError', 'UnicodeTranslateError', 'UnicodeWarning', 'UserWarning',
    'ValueError', 'Warning', 'WindowsError', 'ZeroDivisionError', '__doc__', '__name__', '__package__']

    4.自定义异常,需要从Exception类继承

     1 import Exceptions  
     2 class printException(Exception):  
     3      pass
     4     
     5 def testRaise():  
     6     raise printException('printError') 
    7 try: 8 testRaise() 9 except printException,e: 10 print e

     运行结果:

    printError

    捕获异常

    捕获异常是对可能犯错以及可能的犯错类型,定义好的”应急预案“。如果try中有异常发生时,将执行异常的归属,即执行相应的except中的语句。如果except后面没有任何参数,那么表示所有的exception都交给这段程序处理。
    完整语法:

    try:
      ...
      except exception1:
      ...
      except exception2:
      ...
      except:
      ...
      else:
      ...
      finally:
      ...

    如果try中没有异常,那么except部分将跳过,执行else中的语句。finally是无论是否有异常,最后都要做的一些事。

    try->异常->except->finally

    try->无异常->else->finally

     1 try:
     2   x = input('Enter the first number: ')
     3   y = input('Enter the second number: ')
     4   print x/y
     5 except ZeroDivisionError:
     6   print "y不能为0!"
     7 except TypeError:
     8   print "请输入数字!"
     9 except:
    10   print("Not Type Error & ZeroDivisionError")
  • 相关阅读:
    ansible的管理与剧本
    条件随机场入门(二) 条件随机场的模型表示
    条件随机场入门(一) 概率无向图模型
    隐马尔科夫模型
    高斯混合模型 GMM
    K-Means 算法
    EM 算法
    Sequential Minimal Optimization (SMO) 算法
    LinkedIn文本分析平台:主题挖掘的四大技术步骤
    SVM 核方法
  • 原文地址:https://www.cnblogs.com/Ryana/p/5973770.html
Copyright © 2011-2022 走看看