Java异常处理

java异常处理

java异常处理机制优势之一是可以将异常情况在方法调用中进行传递,通过传递可以将异常情况传递到合适的位置进行处理。

异常分类

异常结构图:

Java异常处理

异常的注意点

1、继承与Exception类的异常类,除了RuntimeException及其子类,都是可检查异常(非运行时异常)

2、可检测异常必须进行处理,否则编译不通过,运行时异常会通过编译,但在程序运行时会报异常

3、运行时异常一般由程序逻辑错误引起的,尽可能避免它

系统错误–Error:

Error类及其子类都是通常用来描述Java运行系统中内部错误,一般不可修复

异常–Exception:

1、运行时异常是程序运行过程中产生的异常,是RuntimeException及其子类的异常,这些异常一般通过try…catch语句捕获

2、可检查异常(非运行时异常)(是RuntimeException及其子类的异常之外的异常,继承于Exception类)

异常分清楚之后讲讲捕获异常处理

1、try…catch代码块:

标准语法如下:

try{
  //可能出现异常程序代码块;
}catch(Exception e){//括号里是异常参数,如果try代码块中抛出异常传递给catch代码块进行处理,这个参数就是该异常的类型,e就是该异常类的对象,可以调用该异常类的方法进行处理异常
  //异常处理代码块;                     
}finally{
  //不管异常有没有被处理都执行的代码块;
}

try…catch的注意点:

1、如果try块里有多行代码并且可能会抛出多个异常,可以用多个catch语句,但是catch异常类型参数必须是从子类到父类的顺序

2、必须有try,catch可以有1个或多个,finally最多1个,可以没有,

3、还有另外一种组合:只有try和finally,没有catch如果try块中抛出了异常,则肯定不能被捕获,程序中断,但是finally代码块依然会被执行;

4、finally块前有return语句,finally依然被执行;

5、finally块前有System.exit(0)语句,finally不被执行;

throw与throws:

throw:

1、运行时异常是JVM自动抛出,非运行时异常需要程序员用throw关键字抛出

2、throw一般在方法体中制造一个异常实例,程序执行到throw时立即终止并抛出异常,

3、格式:throw new 异常类型名(异常信息);使用try…catch来捕获throw抛出的异常

throws:

1、throws通常在声明方法时,用来指定方法可能抛出的异常,多个异常用逗号分隔

2、语法格式:返回值类型 方法名(参数) throws 异常类型名{

方法体;

}

3、使用throws给方法抛出异常时,在调用该方法时,必须为该方法处理异常(可以继续往上抛,但终要处理)

4、throws抛出异常并不一定会发生这些异常,但使用throw,必定会抛出异常

自定义异常:

Java可以通过继承Exception类自定义异常类

简单的代码:

public class ExceptionTest extends Exception{//创建自定义异常,继承Exception类
    public ExceptionTest(String message){//构造方法
        super(message);//调用父类构造方法
    }
    
}
public class Test {
	static void age(int a) throws ExceptionTest{
        if (a<0) {
			throw new ExceptionTest("年龄不能为负数");
		}
        else {
			System.out.println("今年"+a+"岁");
		}
	}
public static void main(String[] args) {
	try {
		age(-21);
	} catch (ExceptionTest e) {
		e.printStackTrace();
	}
}
}