Python 如何引发EOF错误?
我是一个学习python的新手。请看下面的代码(来自Goodrich等人用Python编写的数据结构和算法)Python 如何引发EOF错误?,python,exception-handling,eoferror,Python,Exception Handling,Eoferror,我是一个学习python的新手。请看下面的代码(来自Goodrich等人用Python编写的数据结构和算法) age=-1#一个最初无效的选择 虽然捕获了异常,但这意味着Python将继续循环,而不是让异常渗透到堆栈中,如果程序仍然未捕获,则最终结束程序。在except子句中不带参数调用raise只会再次引发相同的异常,相当于 except EOFError as exc: print("Unexpected error") raise exc 如果您实际上没有处理异常,则需要
age=-1#一个最初无效的选择
虽然捕获了异常,但这意味着Python将继续循环,而不是让异常渗透到堆栈中,如果程序仍然未捕获,则最终结束程序。在except
子句中不带参数调用raise
只会再次引发相同的异常,相当于
except EOFError as exc:
print("Unexpected error")
raise exc
如果您实际上没有处理异常,则需要重新引发异常,而只是在(可能)其他人处理异常之前添加额外的日志记录
可以通过运行
$ python -c 'input()' < /dev/null
Traceback (most recent call last):
File "<string>", line 1, in <module>
EOFError: EOF when reading a line
$python-c'input()'
因为所有从/dev/null
读取的尝试看起来都像是从文件末尾读取的尝试。您捕获了异常,这意味着Python将继续循环,而不是让异常渗透到堆栈中,如果程序仍然未捕获,则最终结束程序。在except
子句中不带参数调用raise
只会再次引发相同的异常,相当于
except EOFError as exc:
print("Unexpected error")
raise exc
如果您实际上没有处理异常,则需要重新引发异常,而只是在(可能)其他人处理异常之前添加额外的日志记录
可以通过运行
$ python -c 'input()' < /dev/null
Traceback (most recent call last):
File "<string>", line 1, in <module>
EOFError: EOF when reading a line
$python-c'input()'
因为所有从/dev/null
读取的尝试看起来都像是从文件末尾读取的尝试。来自:
当读取EOF
时,将引发EOF
EOF
在输入流到达末尾时发送,或者如果它来自控制台,则表示用户在*NIX上按ctrl-D,或在Windows上按ctrl-Z
您可以捕获EOFError
异常,并在循环时中断,以优雅地结束程序,因此将异常块更改为:
except EOFError:
print('Done.')
break
发件人:
当读取EOF
时,将引发EOF
EOF
在输入流到达末尾时发送,或者如果它来自控制台,则表示用户在*NIX上按ctrl-D,或在Windows上按ctrl-Z
您可以捕获EOFError
异常,并在循环时中断,以优雅地结束程序,因此将异常块更改为:
except EOFError:
print('Done.')
break
如果你想筹集资金
以下代码将在Python中生成SyntaxError、EOF:
打印(“EOF现在在哪里?”)
这是一个测试,看看EOF发生在哪里。。。怀疑是4号线的EOF
打印(“你好,世界!”
不过,我不确定这是否是您所说的“引发错误”的意思。如果您希望引发错误,请在StackOverflow中创建一个新帖子
以下代码将在Python中生成SyntaxError、EOF:
打印(“EOF现在在哪里?”)
这是一个查看EOF发生位置的测试…怀疑是EOF 4号线
打印(“你好,世界!”
我不确定这是否是你所说的“引发错误”的意思。在StackOverflow中创建一个新帖子很抱歉,但是当我输入$python-c'input()时“EOFError
;不确定如何得到ValueError
。您是否复制并粘贴了代码,并以$Python-c'input()的形式输入了输入了该代码?” $>代码>)是从shell运行的,而不是从解释器内部运行的。<代码> $>代码>只是表示shell提示符的约定。“EOFError
;不确定如何得到ValueError
。您是否复制并粘贴了代码,并以$Python-c'input()的形式输入了输入了该代码?” $< /代码>)是指从shell运行,而不是从解释器内部运行。$
只是指示shell提示符的一种约定。您能给我一个如何捕获EOFError的示例吗?应该是什么输入?除了EOFError
之外的块捕获EOFError
。如果要测试它,只需按*NIX上的ctrl-D键,或者在Windows上按ctrl-Z,然后输入。嗯…我正在使用mac,command-D或Z无法正常工作。command-D的结果:以年为单位输入您的年龄:这是一个无效的年龄规范。以年为单位输入您的年龄:command-Z的结果:以年为单位输入您的年龄:这是一个无效的年龄规范。您能给我演示一个如何捕获EOFErro的示例吗r?应该是什么输入?除了EOFError
之外的块捕获了EOFError
。如果您想测试它,只需在*NIX上按ctrl-D,或在Windows上按ctrl-Z,然后输入。嗯…我使用mac,command-D或Z无法正常工作。command-D的结果:输入您的年龄(以年为单位):这是一个无效的年龄规范。请在y中输入您的年龄ears:command-Z的结果:以年为单位输入您的年龄:这是一个无效的年龄规范。