定义一个Circle类,其对象以radius为属性初始化。
当输入半径不是数字时,确保对象创建引发RadiusInputError,这是用户定义的异常。
例如:Circle('hello')-> RadiusInputError:'hello'不是数字
以下代码我编写并抛出错误:
班级圈子:
def __init__(self,r):
self.r=r
try:
if isinstance(r,str):
raise RadiusInputError("error ")
else:
print(r)
except RadiusInputError as error:
print(error)
circle("Hello")
错误显示为:RadiusInputError除外,错误为
NameError: global name 'RadiusInputError' is not defined
答案 0 :(得分:0)
您不能仅使用尚未创建的异常名称。像Python中的所有内容一样,异常是一个对象,使用前必须对其进行定义。
此外,您当前的代码将引发异常,但随后将其捕获。您希望异常冒泡给用户。
import numbers
class RadiusInputError(Exception):
pass
class Circle:
def __init__(self, radius):
if not isinstance(radius, numbers.Number):
raise RadiusInputError(f'{repr(radius)} is not a number')
self.radius = radius
Circle('hello') # __main__.RadiusInputError: 'hello' is not a number
答案 1 :(得分:-1)
class RadiusInputError(Exception):
pass
class circle:
def __init__(self,r):
self.r=r
try:
if isinstance(r,str):
raise RadiusInputError("error ")
else:
print(r)
except RadiusInputError as error:
print(r+"is not a number")
circle("Hello")