异常中的用户定义和内置参数

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

【讨论】:

以上是关于异常中的用户定义和内置参数的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Python 中实现用户定义的异常? [复制]

《Python学习手册 第五版》 -第35章 异常对象

3.自定义异常

如何将用户定义的函数应用于变量,就像内置函数一样?

Spirng Security知识点整理

python所有的内置类型汇总