이 기사는 Java 예외 처리 방법(코드 포함)을 소개합니다. 필요한 친구가 참고할 수 있기를 바랍니다.
서문: 우리의 일이나 생활에는 항상 다양한 "오류"가 있을 것이고, 다양하고 갑작스러운 "이상"이 있을 것입니다. 아무리 많은 준비와 테스트를 수행하더라도 이러한 이상 현상은 항상 어느 시점에 나타나게 됩니다. 제대로 처리하지 않거나 제때에 처리하지 않으면 다른 새로운 문제로 이어지는 경우가 많습니다. 따라서 우리는 항상 이러한 함정에 주의를 기울여야 하며 완전한 예외 처리 메커니즘을 구축하려면 일련의 "모범 사례"가 필요합니다.
우선 여기에 변칙 분류의 구조도를 그렸습니다.
JDK에서 Throwable은 "Error"와 "Exception"으로 구분되는 모든 예외의 상위 클래스입니다. 오류는 OutOfMemoryError와 같이 제어할 수 없는 심각한 오류가 발생했음을 의미합니다. 예외는 두 가지 범주로 나누어집니다. 확인된 예외(check)는 메서드 정의에서 수동으로 try/catch 또는 throw를 수행해야 합니다. 확인되지 않은 예외(uncheck)는 사전에 처리할 필요가 없습니다. 개발자는 이러한 간단한 개념을 숙지해야 합니다. 자세한 설명은 생략하고 예시만 보여드리겠습니다.
예외 처리에 관해 말하자면 여기서는 try/catch/finally를 언급해야 합니다. try는 단독으로 존재할 수 없으며, catch와 짝을 이루거나 finally 또는 동시에 세 가지 모두와 쌍을 이루어야 합니다.
1. 코드 블록 실행: 코드 블록의 실행을 모니터링하고, 해당 예외가 발견되면 catch로 점프하고, finally 블록으로 바로 이동합니다.
2. 코드 블록 잡기: 해당 예외가 발생하면 내부 코드가 실행되어 처리되거나 위로 던져집니다.
3. 마지막으로 코드 블록: 예외 발생 여부와 관계없이 실행되어야 합니다. 일반적으로 리소스 정리, 연결 해제 등에 사용됩니다. 그러나 여기에 있는 코드가 실행되지 않는 몇 가지 상황이 있습니다.
try/catch/finally 트랩
다음은 tcf를 사용할 때 발생할 수 있는 두 가지 트랩입니다.
Code 1
public class TCFDemo { public static void main(String[] args) { //11 System.out.println(returnVal()); } static int returnVal(){ int a = 1; int b = 10; try{ return ++a; }finally { return ++b; } } }
Trap 1: finally에 return 문을 추가하면 try 코드의 반환 값을 덮어쓰게 됩니다. 비즈니스 로직이 복잡하면 여기서 문제가 발생하기 쉬우며 이는 문제 해결에 도움이 되지 않습니다. 오류.
Code 2
public class TCFDemo { public static void main(String[] args) { Lock lock = new ReentrantLock(); try{ //有可能加锁失败 lock.lock(); //dost }finally { lock.unlock(); } } }
Trap 2: 잠금 메소드는 잠금 시 Uncheck 예외를 던질 수 있으므로 try 코드 블록에 있으면 필연적으로 잠금 해제 메소드가 실행되며 이때 잠금이 성공하지 못합니다. 따라서 IllegalMonitorStateException이 발생하므로 후자의 예외는 이전의 잠금 실패 예외 정보를 덮어쓰게 되므로 잠금 방법을 try 코드 블록 외부로 이동해야 합니다.
Best Practices
그럼, 예외 분류와 try/catch/finally에 대한 주의 사항을 간략하게 소개했습니다. 이제 예외 처리에 관한 "모범 사례"가 무엇인지 요약할 수 있습니다.
Ending
작은 이상이지만 대단한 지식, 어떻게 생각하시나요?
위 내용은 Java 예외 처리 방법 소개(코드 포함)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!