logo

Java에서 던지고 던지기

Java에서는 예외 처리 애플리케이션의 일반적인 흐름이 유지될 수 있도록 런타임 오류를 처리하는 효과적인 수단 중 하나입니다. Java 예외 처리는 ClassNotFoundException, IOException, SQLException, RemoteException 등과 같은 런타임 오류를 처리하는 메커니즘입니다.

이 기사에서는 다음에 대해 알아볼 것입니다. Java에서 예외를 처리할 수 있는 Java의 throw 및 throw입니다.



자바 던지기

Java의 throw 키워드는 메서드나 코드 블록에서 명시적으로 예외를 발생시키는 데 사용됩니다. 우리는 둘 중 하나를 던질 수 있습니다 확인되거나 확인되지 않은 예외 . throw 키워드는 주로 사용자 정의 예외를 발생시키는 데 사용됩니다.

Java throw의 구문

 throw   Instance  Example: throw new ArithmeticException('/ by zero');>

하지만 이 예외는 즉, 사례 유형이어야 합니다. 던질 수 있는 또는 하위 클래스 던질 수 있는 .

예를 들어 에서 Exception은 Throwable의 하위 클래스이며 사용자 정의 예외는 일반적으로 Exception 클래스를 확장합니다. C++와 달리 int, char, floats 또는 던질 수 없는 클래스와 같은 데이터 형식은 예외로 사용할 수 없습니다.



Java를 배열로 나열

프로그램 실행 흐름은 throw 문이 실행되고 가장 가까운 엔클로저가 실행된 직후에 중지됩니다. 노력하다 블록이 있는지 확인하기 위해 검사됩니다. 잡다 예외 유형과 일치하는 명령문입니다. 일치하는 항목을 찾으면 해당 명령문으로 제어가 전송되고, 그렇지 않으면 다음으로 묶습니다. 노력하다 블록이 검사되는 등의 작업이 수행됩니다. 일치하지 않는 경우 잡다 발견되면 기본 예외 처리기가 프로그램을 중단합니다.

자바 던지기 예

예시 1:

자바






// Java program that demonstrates the use of throw> class> ThrowExcep {> >static> void> fun()> >{> >try> {> >throw> new> NullPointerException(>'demo'>);> >}> >catch> (NullPointerException e) {> >System.out.println(>'Caught inside fun().'>);> >throw> e;>// rethrowing the exception> >}> >}> >public> static> void> main(String args[])> >{> >try> {> >fun();> >}> >catch> (NullPointerException e) {> >System.out.println(>'Caught in main.'>);> >}> >}> }>

>

>

산출

Caught inside fun(). Caught in main.>

실시예 2

자바


인라인 스타일 반응



// Java program that demonstrates> // the use of throw> class> Test {> >public> static> void> main(String[] args)> >{> >System.out.println(>1> />0>);> >}> }>

>

>

산출

Exception in thread 'main' java.lang.ArithmeticException: / by zero>

자바 던지기

throws는 이 메소드가 나열된 유형 예외 중 하나를 발생시킬 수 있음을 나타내기 위해 메소드의 시그니처에 사용되는 Java의 키워드입니다. 이러한 메서드에 대한 호출자는 try-catch 블록을 사용하여 예외를 처리해야 합니다.

Java throw 구문

 type method_name(parameters) throws exception_list exception_list is a comma separated list of all the exceptions which a method might throw.>

프로그램에서 예외가 발생할 가능성이 있으면 컴파일러는 항상 이에 대해 경고하고 강제로 확인된 예외를 처리해야 합니다. 그렇지 않으면 다음과 같은 컴파일 시간 오류가 발생합니다. 보고되지 않은 예외 XXX를 포착하거나 발생시키도록 선언해야 합니다. . 이 컴파일 시간 오류를 방지하기 위해 다음 두 가지 방법으로 예외를 처리할 수 있습니다.

  1. Try catch를 사용하여
  2. 을 사용하여 던진다 예어

throws 키워드를 사용하여 예외 처리 책임을 호출자(메서드 또는 JVM일 수 있음)에게 위임할 수 있으며, 그러면 호출자 메서드가 해당 예외를 처리합니다.

Java에서 예제가 발생합니다.

실시예 1

자바


'prim'의 알고리즘'



// Java program to illustrate error in case> // of unhandled exception> class> tst {> >public> static> void> main(String[] args)> >{> >Thread.sleep(>10000>);> >System.out.println(>'Hello Geeks'>);> >}> }>

>

>

산출

error: unreported exception InterruptedException; must be caught or declared to be thrown>

설명

위 프로그램에서는 메인 스레드가 절전 모드로 전환되면 예외가 발생할 가능성이 있기 때문에 컴파일 시간 오류가 발생하고, 다른 스레드는 InterruptedException을 발생시키는 main() 메서드를 실행할 기회를 얻습니다.

실시예 2

자바




strsep

// Java program to illustrate throws> class> tst {> >public> static> void> main(String[] args)> >throws> InterruptedException> >{> >Thread.sleep(>10000>);> >System.out.println(>'Hello Geeks'>);> >}> }>

>

>

산출

Hello Geeks>

설명

위 프로그램에서는 throws 키워드를 사용하여 InterruptedException을 처리했으며 다음과 같은 출력을 얻습니다. 안녕하세요 괴짜들

실시예 3

자바




// Java program to demonstrate working of throws> class> ThrowsExecp {> >static> void> fun()>throws> IllegalAccessException> >{> >System.out.println(>'Inside fun(). '>);> >throw> new> IllegalAccessException(>'demo'>);> >}> >public> static> void> main(String args[])> >{> >try> {> >fun();> >}> >catch> (IllegalAccessException e) {> >System.out.println(>'caught in main.'>);> >}> >}> }>

카일리 제너 나이
>

>

산출

Inside fun(). caught in main.>

throws 키워드에 대해 기억해야 할 중요한 사항

  • throws 키워드는 확인된 예외에만 필요하며 확인되지 않은 예외에 throws 키워드를 사용하는 것은 의미가 없습니다.
  • throws 키워드는 컴파일러를 설득하는 데에만 필요하며 throws 키워드를 사용해도 프로그램의 비정상적인 종료를 방지할 수는 없습니다.
  • throws 키워드의 도움으로 메소드 호출자에게 예외에 대한 정보를 제공할 수 있습니다.