zoukankan      html  css  js  c++  java
  • 0X03异常错误处理

    '''
    异常
        Python使用被称为异常 的特殊对象来管理程序执行期间发生的错误。每当发生让Python不知所措的错误时,它都会创建一个异常对象。如果你编写了处理该异常的代码,程序将继
    续运行;如果你未对异常进行处理,程序将停止,并显示一个traceback,其中包含有关异常的报告。
        异常是使用try-except 代码块处理的。try-except 代码块让Python执行指定的操作,同时告诉Python发生异常时怎么办。使用了try-except 代码块时,即便出现异常,
    程序也将继续运行:显示你编写的友好的错误消息,而不是令用户迷惑的traceback。
    '''
    
    '''
    使用try-except代码块
        当你认为可能发生了错误时,可编写一个try-except 代码块来处理可能引发的异常。你让Python尝试运行一些代码,并告诉它如果这些代码引发了指定的异常,该怎么办。
    处理ZeroDivisionError 异常的try-except 代码块类似于下面这样:
    '''
    
    try:
        print(5/0)     #产生ZeroDivisionError:报错
    except ZeroDivisionError:
        print("You can't divide by zero!")
    
    '''
    代码分析:
        我们将导致错误的代码行print(5/0) 放在了一个try 代码块中。如果try 代码块中的代码运行起来没有问题,Python将跳过except 代码块;如果try 代码块中的代码导致了
    错误,Python将查找这样的except 代码块,并运行其中的代码,即其中指定的错误与引发的错误相同。
    '''
    
    '''
    使用异常避免崩溃
        发生错误时,如果程序还有工作没有完成,妥善地处理错误就尤其重要。这种情况经常会出现在要求用户提供输入的程序中;如果程序能够妥善地处理无效输入,就能再提示用
    户提供有效输入,而不至于崩溃。
    '''
    
    print("Give me two nembers, and I'll divide then.")
    print("Enter 'q' to quit." )
    
    while True:
        first_number = input("
     First number: ")
        if first_number == 'q':
            break
        second_number = input("Second number: ")
        if second_number == 'q':
            break
        answer = int(first_number) / int(second_number)
        print(answer)
    
    # -*- coding:utf-8 -*-
    #!/usr/bin/python
    
    
    '''
    else代码块
        功能:try程序正确执行之后,接下来需要执行的内容均放在slse代码块当中。
    '''
    
    print("Give me two nembers, and I'll divide then.")
    print("Enter 'q' to quit." )
    
    while True:
        first_number = input("
     First number: ")
        if first_number == 'q':
            break
        second_number = input("Second number: ")
        if second_number == 'q':
            break
        try:
            answer = int(first_number) / int(second_number)
        except ZeroDivisionError:
            print("You can't divide by 0!")
        else:
            print(answer
    
    
    '''
    try-except-else 代码块的工作原理大致如下:Python尝试执行try 代码块中的代码;只有可能引发异常的代码才需要放在try 语句中。有时候,有一些仅在try 代码块成功
    执行时才需要运行的代码;这些代码应放在else 代码块中。except 代码块告诉Python,如果它尝试运行try 代码块中的代码时引发了指定的异常,该怎么办。
    通过预测可能发生错误的代码,可编写健壮的程序,它们即便面临无效数据或缺少资源,也能继续运行,从而能够抵御无意的用户错误和恶意的攻击。
    '''

     举例:处理FileNotFindError异常:

    # -*- coding:utf-8 -*-
    #!/usr/bin/python
    
    
    '''
    处理FileNotFoundError异常
    '''
    
    '''
    使用文件时,一种常见的问题是找不到文件:你要查找的文件可能在其他地方、文件名可能不正确或者这个文件根本就不存在。对于所有这些情形,都可使用try-except 代码
    块以直观的方式进行处理。
    '''
    
    filename = 'alice.txt'
    try:
        with open(filename) as f_obj:
            contents = f_obj.read()
    except FileNotFoundError:
        print("找不到对应文件")
    else:
        print(contents)
                  
    
    '''
    代码解析:
        这个错误是函数open() 导致的,因此要处理
    这个错误,必须将try 语句放在包含open() 的代码行之前:
    '''
    # -*- coding:utf-8 -*-
    #!/usr/bin/python
    
    '''
    一;分析文本
    '''
    
    '''
    提取文件当中多少单词
        方法split() 以空格为分隔符将字符串分拆成多个部分,并将这些部分都存储到一个列表中。结果是一个包含字符串中所有单词的列表,虽然有些单词可能包含标点。为计算Alicein Wonderland 包含多少个单词,我们将对整篇小说调用split() ,再计算得到的列表包含多少个元素,从而确定整篇童话大致包含多少个单
    '''
    
    filename = '/home/aaron/桌面/biaoge/htmlcade.txt'
    
    try:
        with open(filename) as f_obj:
            contents = f_obj.read()
    except FileNotFoundError:
        msg = "The file " + filename + "does not exist."
    else:
        #查看文件当中包含多少个单词
        words = contents.split()
        num_words = len(words)
        print("The file " + filename + " has about " + str(num_words) + " words.")
    # -*- coding:utf-8 -*-
    #!/usr/bin/python
    
    '''
    一;分析文本
    '''
    
    '''
    提取文件当中多少单词
        方法split() 以空格为分隔符将字符串分拆成多个部分,并将这些部分都存储到一个列表中。结果是一个包含字符串中所有单词的列表,虽然有些单词可能包含标点。为计算Alicein Wonderland 包含多少个单词,
    我们将对整篇小说调用split() ,再计算得到的列表包含多少个元素,从而确定整篇童话大致包含多少个单
    ''' filename = '/home/aaron/桌面/biaoge/htmlcade.txt' try: with open(filename) as f_obj: contents = f_obj.read() except FileNotFoundError: msg = "The file " + filename + "does not exist." else: #查看文件当中包含多少个单词 words = contents.split() num_words = len(words) print("The file " + filename + " has about " + str(num_words) + " words.")
    # -*- coding:utf-8 -*-
    #!/usr/bin/python
    
    '''
    二;使用多个文件
    '''
    
    '''
    提取文件当中多少单词
        方法split() 以空格为分隔符将字符串分拆成多个部分,并将这些部分都存储到一个列表中。结果是一个包含字符串中所有单词的列表,虽然有些单词可能包含标点。为计算Alicein Wonderland 包含多少个单词,
    我们将对整篇小说调用split() ,再计算得到的列表包含多少个元素,从而确定整篇童话大致包含多少个单 使用循环来达到多个文件处理
    ''' def count_words(filename): try: with open(filename) as f_obj: contents = f_obj.read() except FileNotFoundError: msg = "The file " + filename + "does not exist." else: #查看文件当中包含多少个单词 words = contents.split() num_words = len(words) print("The file " + filename + " has about " + str(num_words) + " words.") filenames = ['/home/aaron/桌面/biaoge/htmlcade.txt','/home/aaron/桌面/biaoge/phpcade.txt'] for filename in filenames: count_words(filename)
    # -*- coding:utf-8 -*-
    #!/usr/bin/python
    
    '''
    二;使用多个文件
    '''
    
    '''
    失败使一声不坑
        我们告诉用户有一个文件找不到。但并非每次捕获到异常时都需要告诉用户,有时候你希望程序在发生异常时一声不吭,就像什么都没有发生一样继续运行。要让程序在失败时一声不吭,可像通常那样编写try 代码块,但在except 
    代码块中明确地告诉Python什么都不要做。Python有一个pass 语句,可在代码块中使用它来让Python 什么都不要
    '''
    
    
    def count_words(filename):
        try:
            with open(filename) as f_obj:
                contents = f_obj.read()
        except FileNotFoundError:
            pass
        else:
            #查看文件当中包含多少个单词
            words = contents.split()
            num_words = len(words)
            print("The file " + filename + " has about " + str(num_words) + " words.")
    
    filenames = ['/home/aaron/桌面/biaoge/htmlcade.txtds','/home/aaron/桌面/biaoge/phpcade.txt']
    
    for filename in filenames:
        count_words(filename)
  • 相关阅读:
    PostgreSQL Replication之第四章 设置异步复制(4)
    PostgreSQL Replication之第四章 设置异步复制(3)
    PostgreSQL Replication之第四章 设置异步复制(2)
    PostgreSQL Replication之第四章 设置异步复制(1)
    PostgreSQL Replication之第三章 理解即时恢复(4)
    Hdu3065 病毒侵袭持续中
    poj3974 Palindrome
    poj1204 Word Puzzles
    Hdu2222 Keywords Search
    Codeforce 633.C Spy Syndrome 2
  • 原文地址:https://www.cnblogs.com/aaron456-rgv/p/12605596.html
Copyright © 2011-2022 走看看