这是用python编写异常的正确方法吗?

这是用python编写异常的正确方法吗?,python,function,class,exception,Python,Function,Class,Exception,以下代码是用Python编写异常的正确方法吗 class Calculator: def power(self,n,p): self.n=n self.p=p if self.n>=0 and self.p>=0: return self.n**self.p else: return ("n and p should be non-negative") myCa

以下代码是用Python编写异常的正确方法吗

class Calculator:
    def power(self,n,p):
        self.n=n
        self.p=p
        if self.n>=0 and self.p>=0:
            return self.n**self.p
        else:
            return ("n and p should be non-negative")


myCalculator=Calculator()
T=int(input())
for i in range(T):
    n,p = map(int, input().split())
    try:
        ans=myCalculator.power(n,p)
        print(ans)
    except Exception as e:
        print(e)   

您只是从
power
返回一个字符串,您可能想在其中引发异常。此外,在修改对象之前,还应选中
n
p
。(我将不再深入讨论为什么
power
正在设置属性。)

类计算器:
def电源(自身、n、p):
如果n<0或p<0:
raise VALUERROR(“两个参数都应为非负”)
self.n=n
self.p=p
返回self.n**self.p
myCalculator=计算器()
T=int(输入())
对于范围(T)内的i:
n、 p=map(int,input().split())
尝试:
ans=myCalculator.power(n,p)
打印(ans)
例外情况除外,如e:
打印(e)

您只是从
power
返回一个字符串,您可能希望在该字符串中引发异常。此外,在修改对象之前,还应选中
n
p
。(我将不再深入讨论为什么
power
正在设置属性。)

类计算器:
def电源(自身、n、p):
如果n<0或p<0:
raise VALUERROR(“两个参数都应为非负”)
self.n=n
self.p=p
返回self.n**self.p
myCalculator=计算器()
T=int(输入())
对于范围(T)内的i:
n、 p=map(int,input().split())
尝试:
ans=myCalculator.power(n,p)
打印(ans)
例外情况除外,如e:
打印(e)

您是否收到错误?代码不起作用吗?您想要解决的问题到底是什么。您可能想在
power
的任一参数为负时引发异常,而不是返回字符串。引发ValueError和exception ValueError而不是exception。它更集中,不会捕获不同的异常。有时,如果没有任何现有异常看起来合适,您也可以通过使用
class YourException(Exception)定义自定义异常来进行自定义:传递
,无需更多上下文,我会传递捕捉
异常
,而不是更具体的异常,因为至少记录了异常,而不是完全忽略异常。您是否收到错误?代码不起作用吗?您想要解决的问题到底是什么。您可能想在
power
的任一参数为负时引发异常,而不是返回字符串。引发ValueError和exception ValueError而不是exception。它更集中,不会捕获不同的异常。有时,如果没有任何现有异常看起来合适,您也可以通过使用
class YourException(Exception)定义自定义异常来进行自定义:传递
,无需更多上下文,我会传递捕捉
异常
,而不是更具体的异常,因为至少记录了异常,而不是完全忽略异常。
class Calculator:
    def power(self, n, p):
        if n < 0 or p < 0:
            raise ValueError("Both arguments should be non-negative")
        self.n = n
        self.p = p
        return self.n ** self.p

myCalculator = Calculator()
T = int(input())
for i in range(T):
    n, p = map(int, input().split())
    try:
        ans = myCalculator.power(n,p)
        print(ans)
    except Exception as e:
        print(e)