亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python如何輸出異常信息(行號(hào))

 更新時(shí)間:2023年08月11日 11:30:10   作者:柳鯤鵬  
這篇文章主要介紹了Python如何輸出異常信息(行號(hào))問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Python輸出異常信息

如下:

 
import traceback
try:
except Exception, e:
    print sys._getframe().f_lineno, 'str(e):\t\t', str(e)
    print sys._getframe().f_lineno, 'repr(e):\t', repr(e)
    print sys._getframe().f_lineno, 'e.message:\t', e.message
    print sys._getframe().f_lineno, 'traceback.print_exc():'; traceback.print_exc()
    print sys._getframe().f_lineno, 'traceback.format_exc():\n%s' % traceback.format_exc()
# 關(guān)鍵是這一句
traceback.print_exc()

python代碼測(cè)試中輸出錯(cuò)誤信息

python輸出錯(cuò)誤信息的方法

1、try -except + raise

?最為常見的捕捉錯(cuò)誤信息形式,其中有try - except, try - except-finally, raise格式

(1)try-except:

語句用來檢測(cè)try語句塊中的錯(cuò)誤,從而讓except語句捕獲異常信息并處理,如果你不想在異常發(fā)生時(shí)結(jié)束你的程序,只需在try里捕獲它。

 try:
     self.cursor.execute(select_plan_info_sql, params)
     for x in self.cursor.fetchall():
         plan.append({     
         })
 except DatabaseError as ex:
     app_log.error("database error: %s, sql: %s, traceback: %s",
                   ex, self.cursor.statement, traceback.format_exc())

(2)try-finally + try-except-finally:

finally 語句無論是否發(fā)生異常都將執(zhí)行最后的代碼。

try:
    f1 = open("test.txt","rU")
    for i in f1:
        i=i.strip()
        print(i)
except Exception as E_results:
    print("捕捉有異常:",E_results)
finally: #finally的代碼是肯定執(zhí)行的,不管是否有異常,但是finally語塊是可選的。
    f1.close
    print("我不管,我肯定要執(zhí)行。")

(3)raise(拋出錯(cuò)誤)

我們也可以自己定義錯(cuò)誤類型,遇到自認(rèn)為是錯(cuò)誤情況時(shí),拋出錯(cuò)誤實(shí)例。用raise語句可以將一個(gè)錯(cuò)誤實(shí)例拋出。

# 實(shí)例1
def fn(s):
    n = s
    if n == 0:
        raise MyError('invalid value: %s' % s)
    return 9 / n
fn(0)
# 實(shí)例2
try:
     self.cursor.execute(select_plan_info_sql, params)
     for x in self.cursor.fetchall():
         plan.append({     
         })
 except DatabaseError as ex:
     app_log.error("database error: %s, sql: %s, traceback: %s",
                   ex, self.cursor.statement, traceback.format_exc())
     raise HTTPError(500)

raise 和 try 的區(qū)別:

  • raise語句負(fù)責(zé)拋出錯(cuò)誤信息,而try語句負(fù)責(zé)檢查是否有錯(cuò)誤信息并捕獲信息。
  • 若沒有try語句,那么錯(cuò)誤信息就要讓python的解釋器來處理。

raise可以轉(zhuǎn)換錯(cuò)誤類型:

  • raise語句也可以不帶參數(shù),此時(shí)按原錯(cuò)誤信息拋出。
  • 此外,在except中raise一個(gè)Error,還可以把一種類型的錯(cuò)誤轉(zhuǎn)化成另一種類型
try:
    10 / 0
except ZeroDivisionError:
    raise ValueError('input error!')

2、self參數(shù)

在Python類中規(guī)定,函數(shù)的第一個(gè)參數(shù)是實(shí)例對(duì)象本身,并且約定俗成,把其名字寫為self。其作用相當(dāng)于java中的this,表示當(dāng)前類的對(duì)象,可以調(diào)用當(dāng)前類中的屬性和方法。

self中存在一個(gè)self.fail方法,即當(dāng)輸入的情況不符合時(shí),將會(huì)使用self.fail(message=u"message")

注:u是unicode格式,表示有中文字符時(shí)候?qū)⒆詣?dòng)轉(zhuǎn)換成中文,否則將以u(píng)nicode形式輸出

def put(self):
    app_id = self.get_argument("app_id").strip()
    if not app_id:
        self.fail(message="Invalid app_id")
    self.cache.sadd(settings.ALLOWED_APPS_KEY, app_id)
    self.success()

3、return tuple

? 當(dāng)在測(cè)試中有多個(gè)情況多個(gè)值,并且在另一個(gè)方法中調(diào)用這些情況的時(shí)候,可以考慮使用這種方法,減少代碼量

def int_cond_judge(temp_para, para, list_num):
     if list_num is None:
         list_num = []
     if not temp_para:
         return None, "{} is empty".format(para)
     if isinstance(temp_para, (unicode, str)) and not temp_para.isdigit():
         return None, "{} format is wrong".format(para)
     temp_para = int(temp_para)
     if list_num and temp_para not in list_num:
         return None, "{} is out of range".format(para)
     return temp_para, None
#	上一步中各個(gè)情況的return返回值為tuple
def return_value(self, temp_para, para, list_num=None):
     value, msg = int_cond_judge(temp_para, para, list_num)
     if msg:
         self.fail(message=msg)
     return value

4、list里面加入錯(cuò)誤信息

? (函數(shù)內(nèi)部引用加值)

5、斷言

? 這個(gè)方法一般使用在測(cè)試中,

self.assertEqual(a, b),如果a和b不相等(輸出為false),則自動(dòng)拋出異常

#   list
json_list = requests.get(self.url_list, self.params).json()
self.assertEqual(json_list['status'], 0)

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 解決pycharm的Python console不能調(diào)試當(dāng)前程序的問題

    解決pycharm的Python console不能調(diào)試當(dāng)前程序的問題

    今天小編就為大家分享一篇解決pycharm的Python console不能調(diào)試當(dāng)前程序的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • 一文詳解Django信號(hào)機(jī)制的工作原理

    一文詳解Django信號(hào)機(jī)制的工作原理

    Django 信號(hào)(signals)是一種實(shí)現(xiàn)解耦的有力工具,它允許某些發(fā)生的事件通知其他部分的代碼,本文將深入探討 Django 信號(hào)的工作原理、如何定義和接收信號(hào),以及如何在項(xiàng)目中有效地使用它們,需要的朋友可以參考下
    2023-11-11
  • 使用Flask開發(fā)RESTful?API的方法實(shí)現(xiàn)

    使用Flask開發(fā)RESTful?API的方法實(shí)現(xiàn)

    RESTful?API是一種基于REST架構(gòu)風(fēng)格設(shè)計(jì)的Web服務(wù)接口,本文主要介紹了使用Flask開發(fā)RESTful?API的方法實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-11-11
  • Python?類和對(duì)象詳細(xì)介紹

    Python?類和對(duì)象詳細(xì)介紹

    這篇文章主要介紹了Python?類和對(duì)象詳細(xì)介紹,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,感興趣的小伙伴可以參考一下
    2022-06-06
  • python將字典內(nèi)容寫入json文件的實(shí)例代碼

    python將字典內(nèi)容寫入json文件的實(shí)例代碼

    在本篇文章里小編給大家整理的是一篇關(guān)于python將字典內(nèi)容寫入json文件的實(shí)例代碼,有需要的朋友們可以參考下。
    2020-08-08
  • python文件操作相關(guān)知識(shí)點(diǎn)總結(jié)整理

    python文件操作相關(guān)知識(shí)點(diǎn)總結(jié)整理

    這篇文章主要介紹了python文件操作相關(guān)知識(shí)點(diǎn),整理匯總了Python文件操作所涉及的常見函數(shù)與方法,并給出了實(shí)例代碼予以總結(jié)歸納,需要的朋友可以參考下
    2016-02-02
  • python實(shí)現(xiàn)飛機(jī)大戰(zhàn)游戲(pygame版)

    python實(shí)現(xiàn)飛機(jī)大戰(zhàn)游戲(pygame版)

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)pygame版的飛機(jī)大戰(zhàn)游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • 詳述numpy中的np.random.random()系列函數(shù)用法

    詳述numpy中的np.random.random()系列函數(shù)用法

    本文主要介紹了詳述numpy中的np.random.random()系列函數(shù)用法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • pytorch的backward()的底層實(shí)現(xiàn)邏輯詳解

    pytorch的backward()的底層實(shí)現(xiàn)邏輯詳解

    自動(dòng)微分是一種計(jì)算張量(tensors)的梯度(gradients)的技術(shù),它在深度學(xué)習(xí)中非常有用,這篇文章主要介紹了pytorch的backward()的底層實(shí)現(xiàn)邏輯,需要的朋友可以參考下
    2023-11-11
  • Ubuntu20.04環(huán)境安裝tensorflow2的方法步驟

    Ubuntu20.04環(huán)境安裝tensorflow2的方法步驟

    這篇文章主要介紹了Ubuntu20.04環(huán)境安裝tensorflow2的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01

最新評(píng)論