在Java中,异常是在程序执行过程中出现的不正常情况,这些情况会打断正常的指令流。Java处理异常的方式是中断处理。
Java中的异常分为两大类:检查型异常(Checked Exceptions)和非检查型异常(Unchecked Exceptions)。
IOException
。RuntimeException
)和错误(Error
)。这类异常在编译时不会被检查。Java使用try
、catch
、finally
和throw
、throws
关键字来处理异常。
try
块包含可能产生异常的代码,catch
块用来捕获和处理异常。
public class TryCatchExample {
public static void main(String[] args) {
try {
int data = 50 / 0; // 可能产生异常的代码
} catch (ArithmeticException e) {
System.out.println(e);
}
System.out.println("程序继续执行...");
}
}
java.lang.ArithmeticException: / by zero
程序继续执行...
finally
块无论是否有异常发生都会执行,通常用于释放资源。
public class FinallyExample {
public static void main(String[] args) {
try {
int data = 25 / 5;
} catch (NullPointerException e) {
System.out.println(e);
} finally {
System.out.println("finally块总是执行");
}
System.out.println("程序继续执行...");
}
}
finally块总是执行
程序继续执行...
public class ThrowExample {
static void checkAge(int age) {
if (age < 18) {
throw new ArithmeticException("未成年");
} else {
System.out.println("欢迎投票");
}
}
public static void main(String[] args) {
try {
checkAge(15);
} catch (ArithmeticException e) {
System.out.println("捕获的异常: " + e.getMessage());
}
}
}
捕获的异常: 未成年
有时候,我们需要根据特定的应用需求来定义异常。这可以通过继承Exception
类或任何其子类来实现。
class MyException extends Exception {
public MyException(String s) {
super(s);
}
}
public class CustomExceptionExample {
static void validate(int number) throws MyException {
if (number < 10) {
throw new MyException("数字太小");
}
}
public static void main(String[] args) {
try {
validate(3);
} catch (MyException ex) {
System.out.println("捕获的异常:" + ex.getMessage());
}
}
}
捕获的异常:数字太小
Java的异常处理机制是一种强大的工具,它不仅能帮助我们处理程序中的错误情况,而且还能使程序的流程更加清晰。理解和合理使用异常处理,对于编写可靠和健壮的Java程序至关重要。