【问题标题】:Handling Exceptions in py, program doesn't give output [duplicate]处理py中的异常,程序不给出输出[重复]
【发布时间】:2020-09-28 06:02:16
【问题描述】:

问题:定义一个类 Circle,其对象初始化为半径作为它的属性。

当输入半径不是数字时,确保对象创建引发 RadiusInputError,这是一个用户定义的异常。

使用 try ... except 子句。

使用语句 c1 = Circle('hello') 创建一个 Circle c1,并执行脚本。

应该向用户显示错误消息“'hello' is not a number”。

我的代码:

class RadiusInputError(Exception):
    pass

class Circle:
    def __init__(self,radius):
        self.radius=radius
        if type(self.radius) == "<class 'str'>":
            raise RadiusInputError

try:
    c1 = Circle('hello')
except RadiusInputError:
    print("'Hello' is not a number.")

【问题讨论】:

  • 建议使用isinstance来检查对象是否属于特定类型stackoverflow.com/questions/1549801/…,而不是type,将代码更改为isinstance(self.radius, str)
  • 仍然没有输出:
  • 您期望的输出是什么?
  • "&lt;class 'str'&gt;" 是一个包含字母 &lt;class 'str'&gt;字符串。实际类型只是str。使用if type(self.radius) == str:if isinstance(self.radius, str)。请注意,理想情况下,您应该检查所需的类型,而不是某些不需要的类型 - 例如,dict 在这里也可能不需要,但会通过您的检查。

标签: python python-3.x python-requests


【解决方案1】:

我试图解决一些问题。 __init__ 代替 inittype(self.radius) == str 代替 type(self.radius) == "" 请尝试以下代码:

class RadiusInputError(Exception): 
    pass


class Circle: 
    def __init__(self, radius): 
        self.radius = radius 
        if type(self.radius) == str: 
            raise RadiusInputError


try: 
    c1 = Circle('hello') 
except RadiusInputError: 
    print("'Hello' is not a number.")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-05
    • 2021-05-04
    • 2011-12-12
    • 2013-03-23
    • 2020-02-24
    • 1970-01-01
    • 1970-01-01
    • 2011-08-17
    相关资源
    最近更新 更多