所以,我必须创建两个文件。一个是类定义。另一个使用班级'方法/场。
(Artifact.java)工件类定义:
public class Artifact {
int artNumber;
String arcName;
String artType;
int artYear;
double artWeight;
Artifact(int artNumber, String arcName, String artType, int artYear,double artWeight) {
this.artNumber = artNumber;
this.arcName = arcName;
this.artType = artType;
this.artYear = artYear;
this.artWeight = artWeight;
}
public void changeArtYear(int x) {
this.artYear = x;
}
public void changeArcName(String x) {
this.arcName = x;
}
public int getArtNumber() {
return artNumber;
}
public String getArcName() {
return arcName;
}
public String getArtType() {
return artType;
}
public int getArtYear() {
return artYear;
}
public double getArtWeight() {
return artWeight;
}
public String toString(){
return("The artifact #"+artNumber+" was discovered by "+arcName+". The artifact is made of "+artType+" and was discovered in "+artYear+". The artifact weighs "+artWeight+" kilograms.");
}
}
(ArtifactTester.java)测试方法:
public class ArtifactTester {
public static void main(String[] args){
Artifact test = new Artifact(88888888,"ben","clay",1624,46.4);
System.out.println(test.toString()); //toString()
System.out.println(test.getArtWeight()); //getArtWeight()
System.out.println(test.getArtYear()); //getArtYear()
System.out.println(test.getArtType()); //getArtType()
System.out.println(test.getArcName()); //getArcName()
System.out.println(test.getArtNumber()); //getArtNumber()
test.changeArcName("zack");
test.changeArtYear(1400);
System.out.println(test.getArcName()); //getArcName()
System.out.println(test.getArtYear()); //getArtYear()
}
}
无论如何,我的老师告诉我添加异常处理,但我不确定在哪里添加异常处理。
问题:在这种情况下是否可以使用异常处理?
答案 0 :(得分:2)
好直言不讳。 是。当然。您可以随时随地使用异常处理(大部分时间)。虽然,在这种具体情况下,我并没有真正看到它的充分理由。但是,我会接受你的需要。 现在,至于处理异常的位置,这取决于您。您可以在两个位置之一添加异常处理。您可以在调用以下方法时添加异常处理:
try { //try executing a block of code which may throw exception
test.toString()
}
catch(Exception e) { //use Exception for all types of exceptions, or make it specific
//do something here if the exception is thrown
}
或者您可以在方法中自行处理,如下所示:
public void changeArtYear(int x) {
try{
this.artYear = x;
}
catch(Exception e){ //catch the exception that could be thrown
//do something
}
}
如果你想在这里添加异常处理,这应该可以解决你的问题。但是,我强烈建议你学习异常处理和Java中的不同异常,这是用这种语言编程的最重要的基础之一。
另外,让我再次指出:在这个程序中,除了练习之外,确实没有必要使用异常处理。这里没有任何东西可以出于任何原因抛出异常。 (如果您通过一个方法调用传递了null参数,则可能只有NullPointerException
)
好参考/教程: http://www.tutorialspoint.com/java/java_exceptions.htm
此网站通常是一个优秀的Java参考点,但是专门针对您今天的问题,此页面向您展示了如何处理异常。
答案 1 :(得分:0)
在这种情况下是否可以使用异常处理?
我不这么认为。你应该去问你的老师。
在您的代码中,Artifact
只是一个POJO(普通旧Java对象)。它不会抛出任何例外。你在课堂上所做的只是吸气者和制定者,对吧?怎么能抛出任何例外?
你可以抛出异常。在您的setter中,您可以在将参数设置为字段之前检查参数是否为null
。例如:
public void changeArcName(String x) {
if (x == null) throw new ArgumentException ("x is null!");
this.arcName = x;
}
或者,您可以使用暴力并使用try...catch
。像这样:
Artifact test = new Artifact(88888888,"ben","clay",1624,46.4);
try {
System.out.println(test.toString()); //toString()
System.out.println(test.getArtWeight()); //getArtWeight()
System.out.println(test.getArtYear()); //getArtYear()
System.out.println(test.getArtType()); //getArtType()
System.out.println(test.getArcName()); //getArcName()
System.out.println(test.getArtNumber()); //getArtNumber()
test.changeArcName("zack");
test.changeArtYear(1400);
System.out.println(test.getArcName()); //getArcName()
System.out.println(test.getArtYear()); //getArtYear()
} catch (Exception ex) {
ex.printStackTrace ();
}
警告:永远无法访问catch块!
我不知道上面是否是你老师想要的。只需尝试两种方法并将其交付并查看他/她所说的内容!