Python异常处理程序是';不执行
我不知道为什么,但当我在程序末尾打印它时,cislo仍然是10,所以不会执行异常处理程序,但我确信引发了异常Python异常处理程序是';不执行,python,argparse,Python,Argparse,我不知道为什么,但当我在程序末尾打印它时,cislo仍然是10,所以不会执行异常处理程序,但我确信引发了异常 import argparse import locale import sys locale.setlocale(locale.LC_ALL, 'cs_CZ.UTF-8') cislo = 10 parser = argparse.ArgumentParser(prog='dka', description="Determinizace konecneho automatu(DK
import argparse
import locale
import sys
locale.setlocale(locale.LC_ALL, 'cs_CZ.UTF-8')
cislo = 10
parser = argparse.ArgumentParser(prog='dka', description="Determinizace konecneho automatu(DKA)")
parser.add_argument("--inputs", help='vstupni soubor', default=sys.stdin)
try:
parser.parse_args(['--input', 'agas', '--input', 'agag'])
except argparse.ArgumentError:
cislo = 20
print(cislo)
由于以下两个原因,未引发异常:
--inputs
参数不是必需的
parser.add_argument("--inputs", help='vstupni soubor', default=sys.stdin, required=True)
解析器接受缩写为--input
的--input
,因为没有歧义
此外,argparse不会引发ArgumentError,它只会退出。您可以捕获SystemExit或ArgumentParser子类来覆盖此行为
- 由于两个原因,未引发异常:
--inputs
参数不是必需的
parser.add_argument("--inputs", help='vstupni soubor', default=sys.stdin, required=True)
解析器接受缩写为--input
的--input
,因为没有歧义
此外,argparse不会引发ArgumentError,它只会退出。您可以捕获SystemExit或ArgumentParser子类来覆盖此行为
class myparse(argparse.ArgumentParser):
def exit(self,status,message):
print("You are bad: ", status, message)
exit(5)
cislo = 10
parser = myparse(prog='dka', description="Determinizace konecnehoautomatu(DKA)")
给出:
usage: dka [-h] [--inputs INPUTS]
You are bad: 2 dka: error: unrecognized arguments: --inputss agas
那就扩大课程范围吧
class myparse(argparse.ArgumentParser):
def exit(self,status,message):
print("You are bad: ", status, message)
exit(5)
cislo = 10
parser = myparse(prog='dka', description="Determinizace konecnehoautomatu(DKA)")
给出:
usage: dka [-h] [--inputs INPUTS]
You are bad: 2 dka: error: unrecognized arguments: --inputss agas
如果在exception块中放置打印,是否会显示?您是如何确认引发异常的?“但我确信引发了异常。”-为什么?这不会引发异常;argparse允许您将
--inputs
缩写为--input
我已执行了您的代码,但未引发异常,我已将打印“引发异常”并从未打印跟踪。如果将打印放在except块中,它会显示吗?您是如何确认引发异常的?“但我确定引发了异常。”-为什么?这不会引发异常;argparse允许您将--inputs
缩写为--input
我已执行了您的代码,但未引发异常,我已打印了“引发异常”“而且跟踪从未打印。嗯,所以我不能自己返回退出代码或做一些反应?真正有用的解析器:)嗯,所以我不能自己返回退出代码或者做一些反应?真正有用的解析器:)thx,但实际上这个缩写(输入对输入等)仍然存在问题,这是意外的,所以我将用myselfthx解析它,但实际上这个缩写(输入对输入等)仍然存在问题,这是意外的,所以我将自己解析它