亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

代碼設計和錯誤處理:退出程序并在python中出現錯誤

代碼設計和錯誤處理:退出程序并在python中出現錯誤

繁花不似錦 2021-03-17 13:14:11
我知道終止python腳本的幾種方法,但是在這里,我正在尋找一種良好且健壯的代碼設計(一種推薦的方式)。我的大部分代碼都是用從主函數調用的函數編寫的。我想知道最推薦的方法是停止從給定函數(從main調用)運行python腳本/程序,并向用戶顯示消息錯誤。我當前設計的示例(如果有一些想法,請評論一下更好的做法):import sysdef run_function(x):    if x == 4:       print 'error, x cannot be 4'       sys.exit(0)    else:       print 'good x'    return 0def main():    x=4    run_function(x)    return 0
查看完整描述

3 回答

?
縹緲止盈

TA貢獻2041條經驗 獲得超4個贊

只需打印消息,然后使用sys.exit()結束程序。該argparse模塊使用實用程序功能(或多或少地被調整為獨立的):


def exit(status=0, message=None):

    if message:

        _print_message(message, sys.stderr)

    sys.exit(status)

其中_print_message()寫入該消息到指定的文件對象,這里sys.stderr; 基本上只是使用print。


查看完整回答
反對 回復 2021-03-23
?
幕布斯7119047

TA貢獻1794條經驗 獲得超8個贊

在您的示例中,我建議您從函數中引發錯誤,并且僅在中調用exit __main__。該消息將使用raise傳遞。例子:


import sys


def run_function(x):

    if x == 4:

        raise ValueError('error, x cannot be 4')

    else:

        print 'good x'

    return 0


def main():

    x=4

    run_function(x)

    return 0


if __name__ == "__main__":

    try:

        main()

    except ValueError as e:

        sys.exit(e)

這樣,您的函數表明它收到了錯誤的值,并且調用者sys.exit根據該錯誤決定調用a 。


有關sys.exit的更多詳細信息:


可選參數arg可以是給出退出狀態的整數(默認為零),也可以是其他類型的對象。如果它是整數,則shell等將零視為“成功終止”,而將任何非零值視為“異常終止”。大多數系統要求它的范圍是0-127,否則會產生不確定的結果。某些系統具有為特定的退出代碼分配特定含義的約定,但這些通常尚不完善。Unix程序通常將2用于命令行語法錯誤,將1用于所有其他類型的錯誤。如果傳遞了另一種類型的對象,則None等于傳遞零,并且將任何其他對象打印到stderr并導致退出代碼為1。特別是,sys.exit(“ some error message”)是發生錯誤時退出程序的快速方法。


查看完整回答
反對 回復 2021-03-23
?
回首憶惘然

TA貢獻1847條經驗 獲得超11個贊

首先,您可能要在遇到錯誤時更改退出代碼。exit(0)通常表示該進程已終止且沒有錯誤。那么,為什么run_function以后甚至都沒有檢查(在else分支中),又為什么要在您的中返回某些內容呢?

除此之外,我在這里看不到任何要回答的問題。


查看完整回答
反對 回復 2021-03-23
  • 3 回答
  • 0 關注
  • 376 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號