在 Java 中,除了可以使用 try…catch 语句块处理之外,当程序出现错误时,系统会自动抛出异常。除此之外,Java 也允许程序手动抛出异常,手动抛出异常使用 throw 语句来完成。
注意:此处的 throw 关键字没有后面的s,与声明抛出异常 throws 是有区别的。
在 Java 中,可以使用 throws 关键字在方法声明中指定方法可能抛出的异常。
通过在方法声明中使用 throws 关键字,可以告诉调用者该方法可能抛出的异常类型,从而让调用者在调用该方法时进行相应的异常处理。如果调用者不对可能抛出的异常(检查异常)进行处理,那么编译器将会报错。
声明异常的语法如下:
void methodName() throws ExceptionType1, ExceptionType2, ... { // 方法体 }
其中,ExceptionType1, ExceptionType2, ... 是方法可能抛出的异常类型,可以是 Java 内置的异常类,也可以是自定义的异常类。
以下是几个示例:
(1)声明抛出单个异常:
void readFile() throws IOException { // 读取文件的代码 }
上述代码中,readFile() 方法声明可能抛出 IOException 异常。
(2)声明抛出多个异常:
void divideNumbers() throws ArithmeticException, IllegalArgumentException { // 除法运算的代码 }
上述代码中,divideNumbers() 方法声明可能抛出 ArithmeticException 和 IllegalArgumentException 异常。
在 Java 中,可以使用 throw 关键字来抛出异常。抛出异常的语法如下:
throw new ExceptionType("Exception message");
详细说明:
(1)ExceptionType 是异常的类型,可以是 Java 内置的异常类,也可以是自定义的异常类。
(2)Exception message 是异常的详细描述信息。
以下是几个示例:
(1)抛出 Java 内置的异常类:
throw new NullPointerException("Variable is null");
上述代码将抛出一个空指针异常,异常信息为 “Variable is null”。
(2) 抛出自定义的异常类:
throw new CustomException("Custom exception occurred");
上述代码将抛出一个自定义异常类 CustomException 的实例,异常信息为 “Custom exception occurred”。
(3)捕获并处理异常:
try { // 可能会抛出异常的代码 throw new IOException("IO exception occurred"); } catch (IOException e) { // 异常处理逻辑 System.out.println("Exception caught: " + e.getMessage()); }
上述代码在 try 块中抛出一个 IO 异常,然后在 catch 块中捕获并处理该异常。
注意:在使用 throw 抛出异常时,需要确保异常被适当地捕获和处理,以避免程序崩溃或产生其他不受控制的错误。