向布尔方法添加异常

时间:2018-11-14 19:32:34

标签: java

我有一个equals方法来比较一些属性,这就是它的样子:

public boolean Complementos(COSTOS obj) {
    if (this == obj)
        return true;

    if (obj == null)
        return false;

    if (getClass() != obj.getClass())
        return false;

    COSTOS other = (COSTOS) obj;
    if (NumeroParte == null) {
        if (other.NumeroParte != null)
            return false;
    } else if (!NumeroParte.equals(other.NumeroParte))
        return false;

    if (descripcion == null) {
        if (other.descripcion != null)
            return false;
    } else if (!descripcion.equals(other.descripcion))
        return false;

    if (Double.doubleToLongBits(monto) != Double.doubleToLongBits(other.monto))
        return false;

    if (referencia != other.referencia)
        return false;

    return true;
}   

但是除了查看属性是否相等外,我还想从属性“ -1、0、1”返回“ compareToIgnoreCase”中的值,并且由于布尔方法,我不允许这样做并且我尝试将其设置为“ int”,但是这只会将我的“ return false / true”标记为错误,因此...我可以使用异常吗?如果可以的话...该如何实施?

谢谢

1 个答案:

答案 0 :(得分:0)

可以使用异常来传达此信息,但您绝对不应该这样做。例外是在特殊情况下使用的,不应将其用于控制​​应用程序的流程。

通常来说,如果您有一个方法需要返回多个输出,则应将其拆分为多个方法。这样可以使您的代码更具可重用性,并且使API的混乱程度降低。

在极少数情况下您无法执行此操作,则可以返回一个表示方法结果的对象。例如:

import tkinter as tk


class Example(tk.Tk):
    def __init__(self):
        super().__init__()

        self.canvas=tk.Canvas(self, width=800, height=600)
        self.canvas.create_text(400, 200, text='Starlight', font='Arial 20 bold')
        self.canvas.create_text(400, 325, text='Press a button to start the game', font='Arial 20')
        self.canvas.pack()
        self.a=400
        self.b=500
        self.canvas.bind('<Button-1>', self.start)
        self.canvas.bind('<Button-3>', self.start)
        self.canvas.bind_all('<Left>', self.move_any)
        self.canvas.bind_all('<Right>', self.move_any)
        self.canvas.bind_all('<Up>', self.move_any)
        self.canvas.bind_all('<Down>', self.move_any)

    def start(self, coordinates):
        self.canvas.delete("all")
        self.canvas.create_rectangle(self.a - 20, self.b, self.a + 20, self.b - 50)

    def move_any(self, event):
        self.canvas.delete("all")
        x = event.keysym
        if x == "Left":
            self.a -= 100
        if x == "Right":
            self.a += 100
        if x == "Up":
            self.b -= 100
        if x == "Down":
            self.b += 100 
        self.canvas.create_rectangle(self.a - 20, self.b, self.a + 20, self.b - 50)

if __name__ == "__main__":
    Example().mainloop()