异常中的用户定义和内置参数
Posted
技术标签:
【中文标题】异常中的用户定义和内置参数【英文标题】:User Defined and built in Arguments in exceptions 【发布时间】:2016-11-18 20:05:12 【问题描述】:以下代码在执行时不会导致打印参数(即:不允许除以零)。它只提供来自-的内置错误消息 零除法错误。那么,当内置错误消息可用时,用户定义参数的用途是什么。
print "Enter the dividend"
dividend=input()
print "Enter the divisor"
divisor=input()
try:
result=dividend/divisor
except "ZeroDivisonError",argument:
print "Divide by Zero is not permitted \n ",argument # Argument not getting printed
else:
print "Result=%f" %(result)
【问题讨论】:
请正确格式化您的代码 异常和异常处理不是这样工作的。except "ZeroDivisonError",argument
是无效的 Python。
@Rogalski:它是有效的,只是绝对不是你想做的。
与***.com/questions/4690600/…重复?
【参考方案1】:
使您的异常通用工作:
dividend=int(input("Enter the dividend: "))
divisor=int(input("Enter the divisor: "))
try:
result=dividend/divisor
except Exception,argument:
print "Divide by Zero is not permitted \n ",str(argument) # Argument not getting printed
else:
print "Result=%f" %(result)
如果您想定义自己的异常,请按照以下方式操作:
# Define a class inherit from an exception type
class CustomError(Exception):
def __init__(self, arg):
# Set some exception infomation
self.msg = arg
try:
# Raise an exception with argument
raise CustomError('This is a CustomError')
except CustomError, arg:
# Catch the custom exception
print 'Error: ', arg.msg
您可以在此处找到此模板:Proper way to define python exceptions
【讨论】:
现在可以使用了。 ZeroDivisonError 中除法的拼写错误!但是在修复它之后,参数现在被打印出来了。 ZeroDivisionError 没有错,但是他在行中写的是一个字符串。这应该是 Exception 类中的对象,而不是字符串。 @LingboTang print 也接受对象并成功打印它们 @frist 同样,这不是 print() 的问题。但是,他用来抛出异常的语法不正确。 @Butters 如果你想接受这个答案,你可以点击对勾。【参考方案2】:“ZeroDivisonError”的拼写不正确,而且不应该在“”中。 正确的行:
except ZeroDivisionError,argument:
print "Divide by Zero is not permitted \n ",argument
【讨论】:
以上是关于异常中的用户定义和内置参数的主要内容,如果未能解决你的问题,请参考以下文章