IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Java异常处理 -> 正文阅读

[Java知识库]Java异常处理

异常处理概述

? ? ?在java语言中,将程序执行中所发生的不正常情况称为“异常”。

java中程序在执行过程中所发生的异常事件分为两类:

? ? ?① Error:Java虚拟机无法解决的问题。一般不编写针对性的代码。

? ? ?② Exception:其他因编程错误或者偶然的外在因素导致的一般性问题,可以使用针对性的代码进行处理。

异常处理分类

java.lang.Throwable

? ? ? |---java.lang.Error:一般不编写针对的代码进行处理

? ? ? |---java.lang.Exception:可以进行异常的处理

? ? ? ? ? ?|---编译时异常(checked)【执行javac.exe命令时,可能出现的异常】

? ? ? ? ? ? ? ? |---IOException

? ? ? ? ? ? ? ? ? ? ?|---FileNotFountException

? ? ? ? ? ? ? ? |---ClassNotFountException

? ? ? ? ? ?|---运行时异常(unchecked)【执行java.exe命令时,出现的异常】

? ? ? ? ? ? ? ? |---NullPointException

? ? ? ? ? ? ? ? |---ArrayIndexOutOfException

? ? ? ? ? ? ? ? |---ClassCastException

? ? ? ? ? ? ? ? |---NumberFormatException

? ? ? ? ? ? ? ? |--InputMismatchException

? ? ? ? ? ? ? ? |---ArithmeticException

? ? ? ? ? ? ? ? ···

异常处理的举例

//****************************以下是编译时异常***********************
	@Test
	public void test() {
		File file = new File("hello.txt");
		FileInputStream fis = new FileInputStream(file);
		int data = fis.read();
		while(data != -1) {
			System.out.println((char)data);
			data = fis.read();
		}
		fis.close();
//************************以下是运行时异常*******************************
	@Test
	public void test1() {
		//ArrayIndexOutOfBoundsException
		int[] arr = new int[10];
		System.out.println(arr[12]);
	}
	
	@Test
	public void test2() {
		//java.util.InputMismatchException
		Scanner scanner = new Scanner(System.in);
		int input = scanner.nextInt();
		System.out.println(input);
	}

异常处理方式概述

异常的处理:抓抛模型

过程一:“抛”:程序在执行的过程中,一旦出现异常,就会在异常代码处生成一个对应异常类的对象,并将此对象抛出。

? ? ? ? ? ? ? ? ? ? ? ? 异常对象的产生:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?① 系统自动的生成异常对象。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?② 手动的生成一个异常对象,并抛出(throw),一般为throw Exception/RuntimeException。

过程二:“抓”:可以理解为对异常处理的方式

? ? ① try-catch-finally

? ? ② throws+异常类型

处理异常try-catch方法

? ? ? ?使用try将可能的异常的代码包起来,一旦出现异常,就会生成一个对应异常类的对象,根据此对象的类型,去catch中进行匹配。

? ? ? ?一旦匹配到某个catch时,就进入到catch中进行异常的处理。一旦处理完成,就跳出当前的try-catch结构(没有写finally的情况),继续执行其后的代码。

? ? ? ?catch中异常类型如果没有子父类关系,谁声明在前在后无所谓;但是若存在,则子类一定要声明在父类的前面,否则将会报错。

finally的使用

? ??① finally是可选的

? ? ② finally中声明的代码一定会被执行。即使是catch中出现了异常,try中有return语句,catch中有return语句等情况。

处理异常:throws+异常类型

?“throws+异常类型”写在方法声明处,指明此方法执行时,可能会抛出的异常类型。一旦方法体执行时出现异常,仍会在异常代码处生成一个异常类型的对象。此对象满足throws后异常类型时,就会被抛出。异常代码后续代码就不会被执行。

开发中如何选择哪种方式处理异常?

? ? ① 如果父类中被重写的方法没有throws方式处理异常,则子类重写的方法也不能使用throws,意味着如果子类重写的方法中有异常就只能使用try-catch-finally来处理异常。

? ? ② 执行的方法a中,先后调用了另外几个方法,这几个方法是递进关系执行的。我们建议这几个方法使用throws的方式进行处理。而执行的方法a可以考虑使用try-catch-finally方式进行处理。

手动抛出异常对象:throw

public class StudentTest {
	public static void main(String[] args) {
		Student s = new Student();
		try {
			s.regist(-1001);
		} catch (Exception e) {
			e.printStackTrace();
		}
		System.out.println(s); 
		
	}
}
class Student{
	private int id;
	String name;
	public void regist(int id) throws Exception {
		if(id > 0)
			this.id = id;
		else {
//			System.out.println("您输入的数据非法");
			//手动的抛出异常对象
			throw new Exception("您输入的数据非法!");
		}
	}
	@Override
	public String toString() {
		return "Student [id=" + id + "]";
	}
	
}

面试题:

? ?1.?final、finally、finalize三者之间的区别?

? ?2.throws 和 throw ?

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-11-29 16:10:49  更:2021-11-29 16:12:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 4:04:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码