大家好我真的被卡住了,我不斷收到java.lang.NullPointerException
。我試圖在每個可能的地方處理它,但我沒有成功。這是家庭作業。如果你可以看看並給出一些關於java.lang.NullPointerException
的反饋,那會很好。發生 異常在Captain.handleProblem()
和MalfucntionHandler.proccessMalfunction()
如何處理java.lang.nullpointerexception
public abstract class MalfunctionHandler
{
MalfunctionHandler next;
/**
* severity is a type of Severity
*/
Severity severity;
/**
* @param description describes the severity of the problem
*/
String description;
/**
* @param f file object that refers to the log-silver.txt
*/
File f = new File("log-silver.txt");
MalfunctionHandler(Severity severity)
{
this.severity = severity;
}
public String getDescription()
{
if(description == null)
{
description = "No description available. Probably serious.";
}
return description;
}
final protected void processMalfunction(Malfunction malfunction)
{
if (this.severity == malfunction.getSeverity())
{
handleProblem();
}
else
{
// if(malfunction == null)
next.processMalfunction(malfunction);
}
}
final protected void addHandler(MalfunctionHandler next)
{
this.next = next;
}
abstract void handleProblem();
public Severity getSeverity()
{
return severity;
}
}
public class Malfunction
{
/**
* severity is a type of Severity
*/
Severity severity;
/**
* @param description describes the severity of the problem
*/
String description;
Malfunction(Severity severity, String description)
{
this.description = description;
this.severity = severity;
}
public Severity getSeverity()
{
return severity;
}
public String getDescription()
{
if(description == null)
{
description = "No description available. Probably serious.";
}
return description;
}
}
public enum Severity
{
TRIVIAL, LOW, MEDIUM, HIGH
}
public class SpaceMonkey extends MalfunctionHandler {
MalfunctionHandler malfunction;
SpaceMonkey(Severity severity)
{
super(severity);
}
@Override
void handleProblem()
{
if(malfunction.getDescription() == null)
{
description = "No description available. Probably serious.";
}
FileUtility.writeFile(f, malfunction.getDescription());
FileUtility.writeFile(f, "---> Space monkey assigned to problem.");
}
}
public class ServiceRobot extends MalfunctionHandler {
MalfunctionHandler malfunction;
ServiceRobot(Severity severity)
{
super(severity);
}
void handleProblem()
{
if(malfunction.getDescription() == null)
{
description = "No description available. Probably serious.";
}
FileUtility.writeFile(f, malfunction.getDescription());
FileUtility.writeFile(f, "---> Service Robot assigned to problem.");
}
}
public class Engineer extends MalfunctionHandler
{
MalfunctionHandler malfunction;
Engineer(Severity severity)
{
super(severity);
}
void handleProblem()
{
if(malfunction.getDescription() == null)
{
description = "No description available. Probably serious.";
}
FileUtility.writeFile(f, malfunction.getDescription());
FileUtility.writeFile(f, "---> Engineer assigned to problem.");
}
}
public class Captain extends MalfunctionHandler
{
MalfunctionHandler malfunction ;
Captain(Severity severity)
{
super(severity);
}
@Override
void handleProblem()
{
if(malfunction.getDescription() == null)
{
description = "No description available. Probably serious.";
}
FileUtility.writeFile(f, malfunction.getDescription());
FileUtility.writeFile(f, "---> Captain assigned to problem.");
}
}
你可以發佈NPE的堆棧跟蹤嗎? –
發佈所有錯誤信息 – Drogba
只是在代碼開始前編輯它 –