자바 연구 노트 7- 예외 처리

1. 기본 개념

       예외 처리는 소프트웨어 또는 정보 시스템의 비정상적인 조건 (즉, 프로그램의 정상적인 실행 흐름을 벗어난 일부 특수 조건)을 처리하는 데 사용되는 프로그래밍 언어 또는 컴퓨터 하드웨어의 메커니즘입니다.
       예외 처리 (오류 처리라고도 함) 기능은 프로그램이 실행되는 동안 발생하는 예상치 못한 또는 비정상적인 상황을 처리하는 방법을 제공합니다. 예외 처리는 try, catch 및 finally 키워드를 사용하여 실패 할 수있는 작업을 시도하고, 실패를 처리하고, 사후 리소스를 정리합니다.

2. 이상 분류

  • 오류 : jvm 시스템의 내부 오류, 리소스 고갈 및 기타 심각한 상황.
  • 예외 : 프로그래밍 오류 또는 우발적 인 외부 요인으로 인한 상황
    여기에 사진 설명 삽입

3. 예외 처리 방법

예외 처리 메커니즘을 통해 다음과 같이 나눌 수 있습니다.

  • 예외 잡기 : try… catch… catch …… finally;
  • 예외 발생 : show; shows;

4. 세부 처리 방법

예외 포착

(1) 구문 :
              try {

                            … // 가능한 예외

              }잡기{

              } finally {// 무조건 실행 된 문;

              }

(2) 문법 모듈의 기능 :

       Try 문 : 예외를 포착하는 첫 번째 단계는 try {...} 문 블록을 사용하여 포착 할 예외의 범위를 선택하고 비정상 일 수있는 코드를 try 문 블록에 배치하는 것입니다.

       Catch 문 : catch 문 블록에는 예외 개체를 처리하기위한 코드가 있습니다. 각 try 문 블록에는 생성 될 수있는 다양한 유형의 비정상 개체를 처리하기 위해 하나 이상의 catch 문이 포함될 수 있습니다.

       finally 문 : (프로그램에 없을 수도 있음) try 또는 catch 코드 블록에서 예외가 발생했는지 여부에 관계없이 예외를 포착하는 마지막 단계에서 실행되면 finally 블록의 문이 실행됩니다.

(3) 케이스 :

//案例一:
public class Erron1 {
    
    
	public static void main(String[] args) {
    
    
		int x=0;
		try {
    
    
			System.out.println(2/x);
		} catch (Exception e) {
    
    //当不知道捕获的是什么类型的异常时,可以直接使用所有异常的父类Exception
			e.printStackTrace();//抛出错误类型,原因,地点
			System.out.println(e.getMessage());//输出错误原因
		}
	}

}
//案例二:
//在try中只要遇到错误就会中断后的语句执行,直接执行catch中的语句;
public class Erron1 {
    
    
	public static void main(String[] args) {
    
    
		int x=0;
		try {
    
    
			System.out.println(1);
			System.out.println(2/x);//捕捉到异常后就会中断后面语句执行catch中语句
			System.out.println(2);
			System.out.println(3/x);
		} catch (Exception e) {
    
    
			System.out.println(3);
			e.printStackTrace();//抛出错误类型,原因
			System.out.println(e.getMessage());//输出错误原因
		}
	}
//案例三:
//1、只要在tyr中有finally语句finally中的程序就会被执行;
//2、在捕获异常的代码块中(try{}里的代码),如果前面的代码有异常了,就不会执行后面的,也不会执行后面代码扑捉的catch
public class Erron1 {
    
    
	public static void main(String[] args) {
    
    
		int x=0;
		String[] arr=new String[]{
    
    "e","c","d"};
		
		try {
    
    
			System.out.println(32/x);
			System.out.println(arr[3]);
		} catch (ArithmeticException e1) {
    
    
			e1.printStackTrace();
			System.out.println(1);
		}catch (ArrayIndexOutOfBoundsException e2) {
    
    
			e2.printStackTrace();
			System.out.println(2);
		}finally {
    
    
			System.out.println("异常处理完成!");
		}
		System.out.println("OK");	
	}
}

예외 발생

(1) 기능 :
       예외가 생성되고 호출자가 처리합니다. throws 절은 throw 된 예외 목록을 선언하기 위해 메서드 선언에서 사용할 수 있습니다. throws 후 예외 유형은 메서드에서 생성 된 예외 유형이거나 해당 메서드에서 생성 된 예외 유형일 수 있습니다. 부모 클래스)

(2) 던지기와 던지기의 차이

  • throw는 예외를 발생시키는 문입니다.
    구문 : throw (예외 객체);

  • throws는 메서드가 예외를 throw 할 수 있다는 설명입니다. (메소드를 선언 할 때 사용하는 것은 메서드가 예외를 던질 수 있음을 의미합니다.)
    구문 : (수정 자) (반환 값 유형) (메서드 이름) ([파라미터 목록]) [throws (예외 클래스)] {... }

(3) 케이스 :

//案例一:throws
public class Error2 {
    
    

public static void main(String[] args) {
    
    

		A a=new A();
		try {
    
           //throws在代码这抛出的异常,在调用方去捕获处理
			a.show();
		} catch (Exception e) {
    
    
			e.printStackTrace();
		}
	}
}

class A{
    
    
	int a=12;
	public void show() throws NullPointerException{
    
    
		A b=null;
		System.out.println(b.a);
	}
}
//案例二:throw
public class Error2 {
    
    

public static void main(String[] args) {
    
    

		B b=new B();
		try {
    
    
			b.age(12);
			b.age(-12);
		} catch (Exception e) {
    
    
			e.printStackTrace();//抛出异常
		}
	}
}

class B{
    
    

	int age;
	public void age(int age) throws Exception {
    
    
		if (age >=0&&age<+120) {
    
    
			this.age=age;
			System.out.println("年龄是:"+this.age);
		}else {
    
    
			throw new Exception("年龄输入有误!!");//人工抛出异常
		}
	}
}

추천

출처blog.csdn.net/qq_45913017/article/details/112970093