zoukankan      html  css  js  c++  java
  • Python中的异常处理

    异常

        在程序开发中,如果对于某些代码的执行不确定(程序的语法完全正确),并非程序本身的错误,是与外界交互时,外界输入不规范造成的。以下是处理异常的方法:

    一、单个异常:

    # 只有一个异常产生

    try:

        num = int(raw_input("请输入一个整数:"))

    except:
        print "请输入一个整型"

    二、多个异常 

        如果有多个异常时,可以在except后边添加异常的类型。(异常的类型可以通过错误测试得到;当python解释器出现异常时,最后一行提示的第一个单词为错误类型)

    # 多个异常产生,使用多个except.
    try:

        num = int(raw_input("请输入一个整数:"))

        reslt = 8 / num

        print   reslt

    except  ZeroDivisionError:

        print  "除数不能为0!"

    except  ValueError:

        print  "类型不正确,请输入整数!"

    三、捕获未知异常:

        在开发的时候,要判断所有可能出现的异常是一定的难度的。所以,如果希望程序无论出现任何错误,都不会因python解释器抛出的异常而终止,我们再可以增加一个except来接收未知错误。   

    # 有未知异常的时候,进行如下捕获 
    try:

        num = int(raw_input("请输入一个整数:"))

        reslt = 8 / num

        print  reslt

    except  ZeroDivisionErrot:

        print  "除数不能为0"

    except  Exception  as  result:      # result变量是随便起的,可以接收错误信息

        print  "未知异常:%s"  % result 

    四、完整的异常捕获:

        使用关键字:try ---> else ---> finally ;其中try后面为可能出现异常的代码,else后为可能为结果正确的才会执行的码,finally后为无论程序是否有异常,都会执行的代码。

    try:

        num = int(raw_input("请输入一个整数:"))

        reslt = 8 / num

        print  reslt

    except  ZeroDivisionErrot:

        print  "除数不能为0"

    # 捕获未知异常

    except  Exception  as  result:      # result变量是随便起的,可以接收错误信息

        print  "未知异常:%s"  % result

    # 只有程序正确的时候,才会执行else

    esle:

        print  "程序正常执行!"

    # 程序无论是否异常,都会执行finally中代码

    finally:

        print  "hello world!!!"

    五、主动抛出异常情况:
    # 实例:输入一个密码。当密码为长度 >= 8合理,返回密码输入的密码;否则异常

    def  demo()

        # 提示用户输入密码

        pawd = raw_input("请输入密码:")

        # 对密码的长度进行判断

        if  len(pawd) >= 8:

            return  pawd

        # 当密码长度小于8时,主动抛出异常(首先创建异常对象,添加异常信息)

        expt = Exception("密码长度不够!!!")

        raise  expt

    # 注意:只抛出异常而不捕获,会出现错误;以下是捕获异常的部分

    try:

        print  demo()   # 若密码正确,输出密码;错误的话,输出错误的提示信息

    except  Exception  as  result:

        print  "异常信息提示:%s"  %result

    else:

        print  "密码设计成功!!"

     
  • 相关阅读:
    POJ 2411 Mondriaan's Dream( 轮廓线dp )
    BZOJ 4177: Mike的农场( 最小割 )
    BZOJ 2186: [Sdoi2008]沙拉公主的困惑( 数论 )
    2015.8.27
    BZOJ 1084: [SCOI2005]最大子矩阵( dp )
    BZOJ 1014: [JSOI2008]火星人prefix( splay + hash )
    BZOJ 1047: [HAOI2007]理想的正方形( 单调队列 )
    BZOJ 1025: [SCOI2009]游戏( 背包dp )
    BZOJ 2795: [Poi2012]A Horrible Poem( hash )
    HDU 5636 Shortest Path 分治+搜索剪枝
  • 原文地址:https://www.cnblogs.com/uthnb/p/9618306.html
Copyright © 2011-2022 走看看