目录
一、异常处理概述
定义与重要性:
异常是在程序执行期间发生的错误情况。
异常处理允许程序在出现错误时仍能继续运行或优雅地退出。
异常分类:
运行时异常(Runtime Exception):通常由于编程错误导致,例如数组越界访问。
检查型异常(Checked Exception):编译器要求必须处理的异常,例如文件未找到。
错误(Error):严重问题,如内存不足,通常无法恢复。
二、使用try-catch-finally块处理异常
基本语法
try { // 尝试执行的代码块 } catch (ExceptionType1 e) { // 处理ExceptionType1类型的异常 } catch (ExceptionType2 e) { // 处理ExceptionType2类型的异常 } finally { // 无论是否发生异常都会执行的代码块 }
示例代码:
public class TryCatchFinallyDemo { public static void main(String[] args) { try { int result = divide(10, 0); System.out.println("结果为:" + result); } catch (ArithmeticException e) { System.out.println("发生了除零错误!"); } finally { System.out.println("无论是否发生异常,我都会执行"); } } private static int divide(int a, int b) throws ArithmeticException { return a / b; } }
三、使用throw与throws关键字抛出异常
throw关键字:手动抛出一个异常实例。
public class ThrowExample { public static void main(String[] args) { validateAge(-1); } private static void validateAge(int age) throws IllegalArgumentException { if (age < 0) { throw new IllegalArgumentException("年龄不能为负数"); } System.out.println("年龄验证通过"); } }
throws关键字:声明一个方法可能会抛出的异常类型。
public class ThrowsExample { public static void main(String[] args) { try { readFile("example.txt"); } catch (IOException e) { e.printStackTrace(); } } private static void readFile(String filename) throws IOException { // 打开并读取文件 } }
四、创建自定义异常类
定义自定义异常:继承自
Exception
或其子类。public class CustomException extends Exception { public CustomException(String message) { super(message); } } public class CustomExceptionDemo { public static void main(String[] args) { try { throw new CustomException("这是一个自定义异常"); } catch (CustomException e) { e.printStackTrace(); } } }
五、 枚举类型
定义枚举类型:枚举是一种特殊的类,代表一组固定的常量。
public enum Color { RED, GREEN, BLUE; }
使用枚举类型:枚举可以包含方法、构造函数等。
public enum ErrorCode { INVALID_INPUT("输入无效"), NULL_POINTER("空指针异常"); private String message; ErrorCode(String message) { this.message = message; } public String getMessage() { return message; } }
六、结合自定义异常与枚举类型
标签:String,JavaOOP06,枚举,static,catch,异常,public From: https://blog.csdn.net/XYL6AAD8C/article/details/143735176示例代码:
public class CustomEnumException extends RuntimeException { private ErrorCode errorCode; public CustomEnumException(ErrorCode errorCode) { super(errorCode.getMessage()); this.errorCode = errorCode; } public ErrorCode getErrorCode() { return errorCode; } } public class EnumExceptionDemo { public static void main(String[] args) { try { throw new CustomEnumException(ErrorCode.INVALID_INPUT); } catch (CustomEnumException e) { System.out.println("捕获到异常: " + e.getErrorCode().getMessage()); } } }