흑마 프로그래머--java기초--이상노트
예외:
이상: 정상이 아닙니다.프로그램이 실행될 때 나타나는 비정상적인 상황.사실은 프로그램에 문제가 있는 거야.이 문제는 대상을 향한 사상에 따라 묘사하여 대상으로 봉인되었다.
문제의 발생에는 원인이 있고, 문제의 명칭, 문제의 묘사 등 여러 가지 속성 정보가 존재하기 때문이다.다중 속성 정보가 나타나면 가장 편리한 방법은 이 정보를 봉인하는 것이다.
이상은 자바가 대상을 향한 사상에 따라 문제를 대상을 봉인하는 것이다.이렇게 하면 조작 문제와 문제를 처리하는 데 편리하다.
각표가 경계를 넘고 빈 지침 등 여러 가지 문제가 나타난다.이 문제들을 분류하다.그리고 이런 문제들은 모두 공통된 내용이 있다. 예를 들어 모든 문제에 명칭이 있고 문제에 대한 묘사 정보, 문제가 발생하는 위치가 있기 때문에 끊임없이 위로 추출할 수 있다.이상 체계를 이루다.
--------java.lang.Throwable:
Throwable: 던질 수 있습니다.
|--Error: 오류, 일반적인 경우 맞춤형 코드를 작성하지 않고 처리합니다. 보통 jvm에서 발생하기 때문에 프로그램을 수정해야 합니다.
|--Exception: 예외, 맞춤형 처리 가능
오류든 이상이든 모두 구체적인 자류가 모든 문제를 나타내고 그들의 자류는 공통점을 가진다. 바로 부류명을 자류의 접미사로 하는 것이다.
이 체계 중의 모든 종류와 대상은 독특한 특징을 가지고 있다.바로 가포성입니다.
던질 수 있는 구현: 바로 이 체계의 클래스와 대상은throws와throw 두 키워드에 의해 조작될 수 있다.
catch (Exception e) { //e try 。
System.out.println("message:"+e.getMessage());// 。
System.out.println("toString:"+e.toString());// + 。
e.printStackTrace();// ; + + 。
}
--------------------------------------------------------
class Demo
{
int div(int a,int b)throws Exception// throws 。
{
return a/b;
}
}
class ExceptionDemo
{
public static void main(String[] args)
{
Demo d = new Demo();
try
{
int x= d.div(4,0);
System.out.println("x="+x);
}
catch (Exception e)//Exceptione = new ArithmeticException();
{
System.out.println(" ");
System.out.println(e.getMessage());// / by zero;
System.out.println(e.toString());// : 。
e.printStackTrace();// , , 。
// jvm , printStackTrace 。
// 。
}
System.out.println("over");
}
}
:
/ by zero
java.lang.ArithmeticException: / by zero
java.lang.ArithmeticException: / by zero
atDemo.div(ExceptionDemo.java:6)
atExceptionDemo.main(ExceptionDemo.java:18)
over
개발할 때 만약에 기능을 정의할 때 이 기능에 문제가 발생할 수 있음을 발견하면 문제를 기능을 정의할 때 표시해야 한다. 그러면 호출자는 이 기능을 사용할 때 처리 방식을 미리 제시할 수 있다.
어떻게 표시합니까?throws 키워드를 통해 완성, 형식:throws 이상 클래스 이름, 이상 클래스 이름...
이렇게 표시한 후, 호출자는 이 기능을 사용할 때 반드시 처리해야 한다. 그렇지 않으면 컴파일에 실패할 것이다.
처리 방식은 두 가지가 있다. 첫째, 포착;2. 던진다.
포착: 자바의 맞춤형 문장 블록을 처리합니다.
try {
검출된 코드가 필요합니다.
}
catch (이상 클래스 변수 이름) {
이상 처리 코드;
}
fianlly{
반드시 실행될 코드;
}
이상 처리 원칙: 기능이 몇 가지 이상을 제거하고 기능 호출이try 처리를 하면catch 처리 코드 블록이 필요합니다. 이런 처리는 목적성이 있기 때문에 몇 개를 던지면 몇 개를 처리합니다.
특수한 상황:try가 여러 개의catch에 대응할 때 부류의catch 문장 블록이 있으면 반드시 아래에 놓아야 합니다.
throw와 throws 키워드의 차이점:
throw는 이상 대상을 던지는 데 사용되며 뒤에 있는 것은 이상 대상입니다.throw는 함수에 사용됩니다.
throws는 이상 클래스를 던지는 데 사용되며, 뒤에 있는 이상 클래스는 여러 개와 쉼표로 구분할 수 있습니다.throws는 함수에 사용됩니다.
일반적인 상황: 함수 내용에throw가 있으면 이상 대상을 던지고 처리하지 않으면 함수에 반드시 설명해야 합니다. 그렇지 않으면 컴파일에 실패합니다.하지만 특별한 경우도 있다.
이상은 두 가지로 나뉜다.
1: Exception 및 하위 클래스가 컴파일할 때 감지된 예외인 경우 컴파일할 때 검사되는 예외입니다.
2: 런타임 예외. Exception에는 특별한 하위 클래스인 런타임 Exception이 있고 런타임 Exception의 하위 클래스는 런타임 예외입니다. 즉, 이 예외는 컴파일할 때 검사되지 않는 예외입니다.
컴파일할 때 검사되는 예외와 실행할 때 검사되는 예외의 차이점:
검사된 이상을 컴파일하는 것이 함수에서 던져집니다. 함수는 컴파일 실패를 설명해야 합니다.
성명의 원인: 호출자가 이 이상을 처리해야 하기 때문이다.
실행할 때 이상합니다. 함수에서 던져지면 함수에 설명할 필요가 없습니다.
성명하지 않은 원인: 호출자가 처리할 필요가 없고 실행할 때 이상이 발생하여 프로그램을 계속 실행할 수 없기 때문에 호출 처리를 하지 못하게 하고 프로그램을 정지시키며 호출자가 코드를 수정합니다.
이상 처리를 정의할 때try를 언제 정의하고throws를 언제 정의합니까?
기능 내부에 이상이 생기면 내부에서 처리할 수 있으면try를 사용한다.
만약 기능 내부를 처리할 수 없다면, 반드시 성명해서 호출자가 처리하도록 해야 한다.
사용자 정의 이상: 개발할 때 프로젝트에서 자바에 정의되지 않은 문제가 발생했을 때 우리는 자바 이상에 따라 사상을 구축하고 프로젝트의 특유한 문제도 대상을 봉인해야 한다.이 이상을 사용자 정의 이상이라고 부른다.
제법 연산에 있어서 0을 제수로 해서는 안 된다.java에서 이 문제를 Arithmetic Exception 클래스로 설명합니다.이 기능에 대해 우리 프로젝트에서 0을 제외하고는 마이너스로 할 수 없다.그러나 마이너스 부분의 자바는 묘사를 겨냥하지 않았다.그래서 우리는 이 이상을 사용자 정의해야 한다.
예외를 사용자화하려면:
1: 하위 클래스 상속 Exception 또는 Runtime Exception을 정의하여 해당 클래스가 포맷 가능하도록 합니다.
2:throw 또는throws를 통해 조작한다.
class FuShuException extends Exception //getMessage();
{
private int value;
FuShuException()
{
super();
}
FuShuException(String msg,intvalue)
{
super(msg);
this.value = value;
}
public int getValue()
{
return value;
}
}
class Demo
{
int div(int a,int b)throwsFuShuException
{
if(b<0)
throw newFuShuException(" ------ / byfushu",b);// throw 。
return a/b;
}
}
이상 전환 사상: 이상이 호출자가 처리할 수 없는 경우 이 이상을 호출자가 처리할 수 있는 이상으로 변환해야 한다.
try catch finally 결합 방법:
1
2
3
try
try
try
catch
catch
finally
finally
이 경우 이상이 발생하면 처리하지 않지만 자원은 반드시 닫히기 때문에tryfinally 집합은 자원만 닫습니다.
기억:finally는 매우 유용합니다. 주요 사용자가 자원을 닫습니다.이상이 발생하든지 않든지 간에 자원은 반드시 닫아야 한다.
System.exit(0);//jvm에서 종료합니다.finally만 실행하지 않습니다.
예외가 발생한 후 하위 상위 클래스를 덮어쓸 때 다음과 같은 새로운 특징이 있습니다.
1: 부류를 덮어쓰는 방법이 부류를 덮어쓸 때 부류의 방법이 이상을 던진다면 부류의 방법은 이상을 던지지 않거나 부류 이상 또는 이 이상을 던질 수 없으며 다른 이상을 던질 수 없다.
2: 만약에 부류가 여러 개의 이상을 던졌다면 부류는 덮어쓸 때 부류의 이상 서브집합만 던질 수 있다.
참고:
만약 부류나 인터페이스의 방법이 이상을 던진 적이 없다면, 부류는 이상을 던질 수 없고, 부류가 덮어쓰는 방법에 이상이 발생하면try만throws를 던질 수 없습니다.
만약에 이 이상 서브클래스를 처리할 수 없다면 서브클래스 방법의 구체적인 연산에 영향을 주었을 것이다. 이때 서브클래스 방법에서throw를 통해 RuntimeException 이상이나 그 서브클래스를 던질 수 있다. 그러면 서브클래스 방법에서throws가 설명할 필요가 없다.
공통 예외:
1. 커서 경계 이상(IndexOutOfBoundsException)은 그룹, 문자열을 포함한다.
빈 포인터 예외(NullPointer Exception)
2. 유형 변환 예외: ClassCastException
3. 이 요소 이상 없음: NullPointer Exception
4. 조작 이상이 지원되지 않습니다.
이상은 최대한 피해야 하고, 피할 수 없으면 미리 처리 방식을 제시해야 한다.예를 들면 가정용 약, 예를 들면 소화기.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.