예외 처리는 수동적 처리(스스로 처리할 수 없으면 호출된 곳에 던지면 예외가 해결되지 않고 그냥 발생함)와 능동적 처리(예외 잡기, 예외 잡기)로 구분됩니다. try-catch 문 또는 try-catch-finally 문 구현을 통해).
(권장 튜토리얼: Java 입문 튜토리얼)
부정 처리:
구문:
public void m1() throws 异常类名1,异常类名2{}
컴파일을 통과하도록 허용합니다.
발생한 예외가 런타임이 아닌(확인된) 예외인 경우 이 메서드를 호출하는 호출자가 이를 처리해야 합니다.
발생한 예외가 런타임(확인되지 않은) 예외인 경우 처리할 수 있거나 처리되지 않을 수 있습니다.
능동적 처리: (예외 잡기)
예외를 직접 잡아서 처리합니다.
구문:
try{ //异常代码 }catch(异常类名 引用名){ //当异常产生执行的代码 }
try 후의 catch 코드 블록은 하나만 성공적으로 일치할 수 있습니다.
catch 이후에 선언된 예외가 상위 클래스인 경우 이를 포착할 수 있는 예외는 자체 + 모든 하위 클래스 예외입니다(다형성의 표현).
참고: catch 코드 블록에서 예외를 잡을 때 하위 클래스 예외는 상위 클래스 예외보다 먼저 정의되어야 합니다. 그렇지 않으면 컴파일 오류가 발생합니다.
(추천 동영상 튜토리얼: java 동영상 튜토리얼)
최종 코드 블록: 이 코드 블록의 코드는 확실히 실행되며 리소스를 닫는 데 자주 사용됩니다.
try{ }catch(){ }finally{ //无论是否产生异常,一定会去执行的代码 }
참고: finally 코드 블록에 return 문을 정의하지 마세요.
예:
package work; import java.io.EOFException; import java.io.FileNotFoundException; import java.io.IOException; import java.sql.SQLException; import java.util.Scanner; /** * @author 超伟 * @date 2019年5月13日 * @version 1.0.0 */ public class t4 { public static void main(String[] args) { System.out.println("main1"); int n; Scanner sc = new Scanner(System.in); n = sc.nextInt(); ma(n); System.out.println("main2"); } public static void ma(int n){ try { System.out.println("m1"); mb(n); System.out.println("m2"); } catch (EOFException e) { //e.printStackTrace(); System.out.println("EOFException "); } catch (IOException e) { System.out.println("IOException e111"); }catch (SQLException e) { System.out.println("SQLException"); }catch (Exception e) { System.out.println("Exception"); }finally{ System.out.println("in finally"); } } public static void mb(int n) throws Exception { System.out.println("mb1"); if (n==1) { throw new EOFException(); } if (n==2) { throw new FileNotFoundException(); } if (n==3) { throw new SQLException(); } if (n==4) { throw new NullPointerException(); } System.out.println("mb2"); } } 程序运行结果为: main1 1 m1 mb1 EOFException in finally main2
위 내용은 자바에서 예외를 처리하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!