如何在java中抛出异常?
嗯。。以下是给我的指示: 支持与其他货币对象进行加减运算如何在java中抛出异常?,java,exception,Java,Exception,嗯。。以下是给我的指示: 支持与其他货币对象进行加减运算 如果货币不兼容,则引发异常 嗯。。我已经得到了一个包含add()的money类。在这种情况下,我应该如何抛出异常?我的意思是,我知道怎么做,但我应该在哪里做呢?我是在同一个级别上做的吗?或者应该在main()中的某个地方抛出异常,在那里发生所有其他事情 public class Money { Currency currency; int dollar; int cents; //constructor
如果货币不兼容,则引发异常 嗯。。我已经得到了一个包含add()的money类。在这种情况下,我应该如何抛出异常?我的意思是,我知道怎么做,但我应该在哪里做呢?我是在同一个级别上做的吗?或者应该在main()中的某个地方抛出异常,在那里发生所有其他事情
public class Money {
Currency currency;
int dollar;
int cents;
//constructor
public Money(Currency currency, int dollar, int cents) {
super();
this.currency = currency;
this.dollar = dollar;
this.cents = cents;
}
.
.
.
.
public Money add(Money moneyToBeAdded){
Money result = new Money(moneyToBeAdded.getCurrency(),0,0);
Money totalInCents;
if(compareCurrency(moneyToBeAdded)){
totalInCents = new Money(moneyToBeAdded.getCurrency(),0,(moneyToBeAdded.toCents() + cents));
result = totalInCents.toDollars();
}//to do convert currency
return result;
}
public Money subtract()
public boolean compareCurrency(Money money){
return money.currency.equals(currency);
}
}
<>但是,我会考虑创建一个APP或<代码>货币< /代码>特定的异常,根据您的需要对代码< >异常> /代码>或<代码>运行时异常< /代码>进行分类。
如果事情必须是细粒度的,可能是一个MoneyConversionException
扩展MoneyException
<>但是,我会考虑创建一个APP或<代码>货币< /代码>特定的异常,根据您的需要对代码< >异常> /代码>或<代码>运行时异常< /代码>进行分类。
如果事情必须是细粒度的,可能是一个
MoneyConversionException
扩展MoneyException
。一个应该抛出任何异常的方法需要一个throw子句:
public Money add(Money moneyToBeAdded) throws MoneyException{..}
在该方法中,您需要过滤掉希望抛出异常的情况(例如使用if子句),然后执行以下操作:
throw new MoneyException("don't like that currency");
在本例中,MoneyException是一个扩展Exception的类:
class MoneyException extends Exception {..}
应该抛出任何异常的方法需要一个throw子句:
public Money add(Money moneyToBeAdded) throws MoneyException{..}
在该方法中,您需要过滤掉希望抛出异常的情况(例如使用if子句),然后执行以下操作:
throw new MoneyException("don't like that currency");
在本例中,MoneyException是一个扩展Exception的类:
class MoneyException extends Exception {..}
请参阅Oracle网站上的课程
参考Oracle网站上的课程
正如其他人所提到的,有大量资源可供您使用(例如)。不管怎样,抛开这一点,我会小心抛出自定义异常。相反,抛出一个现有的(例如,IllegalArgumentException
),以最小化复杂性。正如其他人所提到的,您可以使用大量资源(例如)。不管怎样,不管怎样,我会小心抛出一个自定义异常。相反,抛出一个现有的异常(例如,IllegalArgumentException
),以最小化复杂性。抛出异常就是报告错误,必须作为方法声明的一部分进行声明。例如:
class SomeMoneyProblem extends Exception {
public SomeMoneyProblem() {
super();
}
public SomeMoneyProblem(String msg) {
super(msg);
}
}
public class Money {
...
public Money() {
}
public Money someMoneyMethod(Money moreMoney) throws SomeMoneyProblem {
....
if ( someProblemCondition )
throw new SomeMoneyProblem();
if ( someOtherProblem )
throw new SomeMoneyProblem("Other Problem");
}
public static void main() {
Money m = new Money();
try {
m.someMoneyMethod();
} catch (SomeMoneyProblem p) {
System.err.println(p);
}
}
}
抛出异常是关于报告错误的,必须将其声明为方法声明的一部分。例如:
class SomeMoneyProblem extends Exception {
public SomeMoneyProblem() {
super();
}
public SomeMoneyProblem(String msg) {
super(msg);
}
}
public class Money {
...
public Money() {
}
public Money someMoneyMethod(Money moreMoney) throws SomeMoneyProblem {
....
if ( someProblemCondition )
throw new SomeMoneyProblem();
if ( someOtherProblem )
throw new SomeMoneyProblem("Other Problem");
}
public static void main() {
Money m = new Money();
try {
m.someMoneyMethod();
} catch (SomeMoneyProblem p) {
System.err.println(p);
}
}
}
我认为这是一个使用未检查异常的好地方;任何添加不兼容货币的尝试都是由于编程错误造成的。所以我建议:
if (!compareCurrency(moneyToBeAdded))
throw new IllegalArgumentException("Mismatched currencies.");
由于IllegalArgumentException
派生自RuntimeException
,因此不需要声明add()
方法可以抛出它
不要创建RuntimeException
的自定义子类。当应用程序试图从特定错误中恢复时,自定义异常类型非常有用,而不仅仅是使用相同的日志记录或警报机制来处理每个异常。程序不应该试图从这样的特定编程错误中恢复。我认为这是使用未检查异常的好地方;任何添加不兼容货币的尝试都是由于编程错误造成的。所以我建议:
if (!compareCurrency(moneyToBeAdded))
throw new IllegalArgumentException("Mismatched currencies.");
由于IllegalArgumentException
派生自RuntimeException
,因此不需要声明add()
方法可以抛出它
不要创建RuntimeException
的自定义子类。当应用程序试图从特定错误中恢复时,自定义异常类型非常有用,而不仅仅是使用相同的日志记录或警报机制来处理每个异常。程序不应该试图从这样的特定编程错误中恢复。有很多关于这方面的可用资源,可以通过a找到,这些资源对您没有帮助吗?我想我只是不确定如何进行。:)得了吧,别这么苛刻。在这方面有很多可用的资源,可以通过a找到,这些资源对你没有帮助吗?我想我只是不知道该怎么做。:)拜托,不要这么苛刻。这是一个不检查异常的好地方,但是自定义运行时异常是个坏主意。它们鼓励泄漏的抽象。这是一个不检查异常的好地方,但自定义运行时异常是个坏主意。他们鼓励漏洞百出的抽象。