Java异常总结

一、java异常定义

1.所谓异常就是指程序在运行时出现错误时通知调用者的一种机制。
2.异常举例
除以“0”

system.out.println(10/0);
//执行结果
Exception in thread "main" java.lang.ArithmeticException : / by zero

数组下标越界

int[] arr = {11,2,3};
system.out.println(arr[100]);
//执行结果
Exception in thread "main" java.lang.ArrayIndexoutofBoundsException : 100

访问 null 对象

public class Test {
public int num = 100;
public static void main(string[] args){
Test t = null;
sysout.out.println(t.num);
	}
}
//执行结果
Exception in thread "main" java.lang.nullpointerException

二、异常的基本用法

1.捕获异常
基本语法:

try{
	//又可能出现异常的语句;
}[catch (//异常类型 异常对象) {
}...]
[finally {
//异常出口
}]

说明:

  1. try 代码块中放的是可能出现异常的代码;
  2. catch 代码块中放的是出现异常后的处理行为;
  3. finally 代码块中的代码用于处理善后工作,会在最后执行;
  4. catch finally 都可以根据情况选择加或不加。
    2.代码示例
    ①不处理异常
int[1,2,3];
system.out.println("before");
system.out.println(arr[100]);
system.out.println("after");
//执行结果
Exception in thread "main" java.lang.ArrayIndexoutofBoundsException : 100

一旦出现异常,程序就终止了 .after 没有正确输出。

②使用 try catch 后的程序执行过程

int[1,2,3];
try{
system.out.println("before");
system.out.println(arr[100]);
system.out.println("after");
}catch(ArrayIndexoutofBoundsException e) {
//打印出现异常的调用栈
e.printStackTrace();
}
system.out.println("after try catch");
//执行结果
before 
java.lang.ArrayIndexoutofBoundsException : 100
	at demo02.Test.main(Test.java: 10)
after try catch

一旦 try 中出现异常,那么 try 代码块中的程序就不会继续执行,而是交给 catch 中的代码块来执行 .catch 执行完毕会继续往下执行。

三、异常处理流程

  1. 程序先执行 try 中的代码;
  2. 如果 try 中的代码程序异常,就会结束 try 中的代码,看和 catch 中的异常是否匹配;
  3. 若匹配就执行 catch 中的代码;
  4. 若不匹配,就会将异常向上传递到上层调用者;
  5. 无论执行 3或者4 ,finally 中的代码都会在该方法结束之前执行;
  6. 若上层调用者也没有处理的了异常,就继续向上传递;
  7. 一直到 main 方法也没有合适的代码处理异常,就会交给 JVM 来进行处理,此时程序就会异常终止。

四、Java异常体系

Java内置异常类之间的继承关系:
在这里插入图片描述
说明:

  1. Java语言规范将派生与 Error 类或 RuntimeException 类的所有异常称为非受查异常,所有的其他异常称为受查异常
  2. 如果一段代码可能抛出 受查异常,那么必须进行显式处理。
    例:
public static void main(string[] args){
	system.out.println(readFile());
	}
	public static String readFile(){
	//尝试打开文件,并读其中一行
	File file = new file ("d : /test.txt");
	//使用文件对象构造 Scanner 对象
	Scanner sc = new Scanner (file);
	return sc.nextLine();
	}
	//编译出错
	Error: (13,22) java : 未报告的异常错误 java.io.FileNotFoundException; 必须对其进行捕获或声明以便抛出。

显式处理方法:
①使用 try catch

public static void main(string[] args){
	system.out.println(readFile());
	}
	public static String readFile(){
		File file = new file ("d : /test.txt");
		Scanner sc = null;
	try{
		sc = new Scanner(file);
	}catch(FileNotFoundException e){
		e.printStackTrace();
	}
		return sc.nextLine();
	}

②在方法上加上异常说明,相当于将处理动作交给上级调用者

public static void main(string[] args){
try{
	system.out.println(readFile());
	}catch(FileNotFoundException e){
		e.printStackTrace();
		}
	}
	public static String readFile(){
		File file = new file ("d : /test.txt");
		Scanner sc = new Scanner (file);
		return sc.nextLine();
	}

扩展

  1. Java中还存在自定义异常,自定义异常通常会继承自 Exception 或者 RuntimeException;

  2. 继承自Exception的异常默认是受查异常

  3. 继承自RuntimeException的异常默认是非受查异常

    以上为我对Java异常的一些浅显的总结。仅供大家参考,有错误请及时联系更改。欢迎大家提出建议。
    才学疏浅,总结的不是很全面,还望见谅。
    
发布了6 篇原创文章 · 获赞 1 · 访问量 686
App 阅读领勋章
微信扫码 下载APP
阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 游动-白 设计师: 上身试试

分享到微信朋友圈

×

扫一扫,手机浏览