<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Python中的用戶定義異常與NZEC錯誤

          共 2725字,需瀏覽 6分鐘

           ·

          2020-10-05 02:19

          前提條件-?本文是對異常處理的擴(kuò)展

          當(dāng)代碼出錯時,Python會引發(fā)錯誤和異常,這可能導(dǎo)致程序突然停止。Python還通過try-except提供了異常處理方法。一些最常見的標(biāo)準(zhǔn)異常包括IndexError,ImportError,IOError,ZeroDivisionError,TypeError和FileNotFoundError。用戶可以使用異常類創(chuàng)建自己的錯誤。

          創(chuàng)建用戶定義的異常

          程序員可以通過創(chuàng)建新的異常類來命名自己的異常。需要直接或間接從Exception類派生異常。盡管不是強(qiáng)制性的,但大多數(shù)異常的名稱都以“錯誤”結(jié)尾,類似于python中標(biāo)準(zhǔn)異常的命名。例如:

          # 創(chuàng)建用戶定義異常的python程序  # 類MyError是從超類異常派生的class MyError(Exception):       # 構(gòu)造函數(shù)或初始值設(shè)定項    def __init__(self, value):         self.value = value       # __str_uu是print()值    def __str__(self):         return(repr(self.value))   try:     raise(MyError(3*2))   #?異常值存儲錯誤except MyError as error:     print('發(fā)生了新的異常: ',error.value)

          輸出:

          '發(fā)生了新的異常: 6'

          完全了解異常類

          要了解有關(guān)類異常的更多信息,請看以下代碼

          help(Exception)?

          從超類異常派生錯誤

          當(dāng)模塊需要處理幾個不同的錯誤時,將創(chuàng)建超類異常。常用的方法之一是為該模塊定義的異常創(chuàng)建基類。此外,定義了各種子類來為不同的錯誤條件創(chuàng)建特定的異常類。

          # 類錯誤是從超級類異常派生的class Error(Exception):       # Error是異常的派生類,但是    #此模塊中異常的基類    pass  class TransitionError(Error):       # 操作嘗試狀態(tài)時引發(fā)    #不允許的過渡。    def __init__(self, prev, nex, msg):         self.prev = prev         self.next = nex           # 拋出的錯誤消息保存在消息中        self.msg = msg try:     raise(TransitionError(2,3*2,"Not Allowed"))   # 異常值存儲錯誤except TransitionError as error:     print('Exception occured: ',error.msg)

          輸出:

          ('Exception occured: ', 'Not Allowed')


          如何使用標(biāo)準(zhǔn)異常作為基類?

          運(yùn)行時錯誤是一個類,是一種標(biāo)準(zhǔn)異常,當(dāng)生成的錯誤不屬于任何類別時會引發(fā)此錯誤。該程序說明了如何將運(yùn)行時錯誤用作基礎(chǔ)類,將網(wǎng)絡(luò)錯誤用作派生類。以類似的方式,任何異常都可以從Python的標(biāo)準(zhǔn)異常派生而來。

          # NetworkError具有基本RuntimeError# 也不例外class Networkerror(RuntimeError):     def __init__(self, arg):         self.args = arg   try:     raise Networkerror("Error")   except Networkerror as e:     print (e.args)

          輸出:

          (“?E”,“?r”,“?r”,“?o”,“?r”)



          在各種競爭性網(wǎng)站上進(jìn)行編碼時,許多人一定遇到NZEC錯誤。顧名思義,NZEC(非零退出代碼)發(fā)生在您的代碼未能返回0時。當(dāng)代碼返回0時,表示它已成功執(zhí)行,否則將根據(jù)錯誤類型返回其他一些數(shù)字。
          當(dāng)程序結(jié)束并且應(yīng)該返回“ 0”以指示是否完成正常并且無法執(zhí)行時,會導(dǎo)致NZEC。當(dāng)然,還有更多與NZEC相關(guān)的案例。

          為何發(fā)生NZEC?(一個例子)

          在python中,通常多個輸入之間用逗號分隔,我們使用input()或int(input())進(jìn)行讀取,但是大多數(shù)在線編碼平臺在測試時都會以空格分隔輸入,在這種情況下,輸入為int(input())無法正確讀取輸入并顯示NZEC之類的錯誤。

          怎么解決?

          例如,考慮一個簡單的程序,您必須讀取2個整數(shù)并將其打?。ㄔ谳斎胛募校瑑蓚€整數(shù)都在同一行中)。假設(shè)您有兩個整數(shù),如下所示:

          23 45


          而不使用:

          n = int(輸入())k = int(輸入())

          用:

          n,k?=?raw_input().split('')n =整數(shù)(n)k =整數(shù)(k)

          用空格分隔輸入。

          錯誤代碼

          n = int(input()) k = int(input()) print n," ",k

          輸入:
          2 3
          當(dāng)您使用上面的輸入IDE中運(yùn)行以上代碼時,您將得到錯誤:

          追溯(最近一次通話):  在第1行的文件“ b712edd81d4a972de2a9189fac8a83ed.py”     n = int(輸入())  文件“”,第1行    2 3      ^SyntaxError:解析時出現(xiàn)意外的EOF

          當(dāng)輸入在2條不同的2行中時,上面的代碼可以正常工作。您可以測試自己。要克服此問題,您需要使用split。

          正確的代碼

          n, k = raw_input().split(" ") n = int(n) k = int(k) print n," ",k

          輸入:

          7?3

          輸出:

          7?3

          NZEC錯誤的一些突出原因

          1. 無限遞歸或堆棧內(nèi)存不足。

          2. 輸入和輸出都與測試用例不完全相同。

          3. 作為在線平臺,使用與您的輸出與指定輸出完全匹配的計算機(jī)代碼測試程序。

          4. 當(dāng)您的程序執(zhí)行基本的編程錯誤(例如除以0)時,也會顯示此類錯誤。

          5. 檢查變量的值,它們很容易受到整數(shù)流的影響。

          ????





          推薦閱讀

          瀏覽 36
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日本视频欧美 | 精品少妇在线刺激 | 亚洲天堂中文字幕 | 依依成人综合网 | 日本东京热无码视频 |