직접 작성한 코드, Java 개발 환경 패키지의 코드 또는 Java 런타임 시스템과 같은 모든 Java 코드는 예외를 발생시킬 수 있습니다. 누구나 Java의 throw 문을 통해 예외를 던질 수 있습니다. 메서드에서 발생하는 모든 예외는 throws 절을 사용해야 합니다.
1. throws에서 예외 발생
메서드가 예외를 발생시킬 수 있지만 이러한 예외를 처리할 수 없는 경우 메서드 선언에서 throws 절을 사용하여 예외가 발생함을 선언할 수 있습니다. 예를 들어, 자동차가 운행 중 오작동을 일으킬 수 있는 경우, 차량 자체가 오작동을 처리할 수 없으므로 운전자가 처리하도록 하십시오.
throws 문은 메소드를 정의할 때 해당 메소드가 발생시킬 예외 유형을 선언하는 데 사용됩니다. 예외 유형이 발생하면 메소드가 모든 예외를 발생시키도록 선언됩니다. 여러 예외는 쉼표로 구분할 수 있습니다. throws 문의 구문 형식은 다음과 같습니다.
methodname throws Exception1,Exception2,..,ExceptionN 예외 목록. 메소드가 예외 목록에서 예외를 발생시키는 경우 해당 메소드는 이러한 유형 및 해당 서브클래스의 예외를 처리하지 않지만 처리를 위해 메소드를 호출하는 메소드에 예외를 발생시킵니다. 예:
import java.lang.Exception; public class TestException { static void pop() throws NegativeArraySizeException { // 定义方法并抛出NegativeArraySizeException异常 int[] arr = new int[-3]; // 创建数组 } public static void main(String[] args) { // 主方法 try { // try语句处理异常信息 pop(); // 调用pop()方法 } catch (NegativeArraySizeException e) { System.out.println("pop()方法抛出的异常");// 输出异常信息 } } }
throw new exceptionname;
throw new IOException;
throw new String(“exception”)
package Test; import java.lang.Exception; public class TestException { static int quotient(int x, int y) throws MyException { // 定义方法抛出异常 if (y < 0) { // 判断参数是否小于0 throw new MyException("除数不能是负数"); // 异常信息 } return x/y; // 返回值 } public static void main(String args[]) { // 主方法 int a =3; int b =0; try { // try语句包含可能发生异常的语句 int result = quotient(a, b); // 调用方法quotient() } catch (MyException e) { // 处理自定义异常 System.out.println(e.getMessage()); // 输出异常信息 } catch (ArithmeticException e) { // 处理ArithmeticException异常 System.out.println("除数不能为0"); // 输出提示信息 } catch (Exception e) { // 处理其他异常 System.out.println("程序发生了其他的异常"); // 输出提示信息 } } } class MyException extends Exception { // 创建自定义异常类 String message; // 定义String类型变量 public MyException(String ErrorMessagr) { // 父类方法 message = ErrorMessagr; } public String getMessage() { // 覆盖getMessage()方法 return message; } }