Welcome to the Treehouse Community
Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.
Start your free trialLeo Marco Corpuz
18,975 PointsCan't figure out my try catch syntax error
When looking at the preview, an error arrow points to the closing parenthesis of catch.
class Example {
public static void main(String[] args) {
GoKart kart = new GoKart("purple");
if (kart.isBatteryEmpty()) {
System.out.println("The battery is empty");
}
kart.drive(42);
try {
kart.drive(42);
}
catch (IllegalArgumentException) {
System.out.println("Not enough battery to drive");
}
}
}
class GoKart {
public static final int MAX_BARS = 8;
private int barCount;
private String color;
private int lapsDriven;
public GoKart(String color) {
this.color = color;
}
public String getColor() {
return color;
}
public void charge() {
barCount = MAX_BARS;
}
public boolean isBatteryEmpty() {
return barCount == 0;
}
public boolean isFullyCharged() {
return MAX_BARS == barCount;
}
public void drive() {
drive(1);
}
public void drive(int laps) {
if (laps > barCount) {
throw new IllegalArgumentException("Not enough battery remains");
}
lapsDriven += laps;
barCount -= laps;
}
}
1 Answer
Brendan Whiting
Front End Web Development Techdegree Graduate 84,738 PointsYou need to give the exception a name in Java as opposed to other languages. And when you crab the exception that was thrown into a named variable, you can then use that variable in your catch block. When the exception is thrown from GoKart.java, it already has a message, so you can just pass a long the same message in your catch block rather than creating your own.
Also, you've put kart.drive(42)
in two places, one of those inside a try
block, and one outside. So the one outside is going to cause problems.