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("年龄输入有误!!");//人工抛出异常
}
}
}