Java的异常处理

这篇博客详细介绍了Java中的异常处理机制,包括异常的产生、处理方式、分类和常见异常类型。异常是程序运行时的不正常状态,Java通过异常类进行描述和处理,提供异常处理关键字如try、catch、finally等,确保程序在遇到异常时能够有控制地执行或恢复。博客还讨论了异常的分类,包括运行时异常和受检型异常,并列举了五种常见的异常类型,如ArithmeticException、NullPointerException等。
摘要由CSDN通过智能技术生成

今天总结了在Java中异常处理的常用方法,在Java中引起异常的原因时有许多因素比如说,硬件失败,除法溢出,数组下标越界,没有完美的程序,所以说应对程序的异常是重中之重,将程序可能存在的异常有办法解决,才能是程序更好的运行

Java异常处理

程序运行时发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常。异常发生时,是任程序自生自灭,立刻退出终止。

public static void main(String[] args) {
   
		Scanner sc = new Scanner(System.in);
		String ss = sc.nextLine();
		int kk = Integer.parseInt(ss);
		System.out.println("用户输入数据为:" + kk);
	}
	// 用户输入abc
	/*
	 * 则执行结果为: Exception in thread "main" java.lang.NumberFormatException: For
	 * input string: "abc" at
	 * java.lang.NumberFormatException.forInputString(NumberFormatException.java
	 * :65) at java.lang.Integer.parseInt(Integer.java:580) at
	 * java.lang.Integer.parseInt(Integer.java:615) at test.A.main(A.java:9)
	 */
}

程序员真理:程序会出错

出错不是问题,关键是出错之后,错误如何处理?谁处理?
程序可以从错误中恢复吗?恢复不了就崩溃么?

意外产生和处理过程概述

运行时有许多因素引起出错,硬件失败,除法溢出,数组下标越界。
出错的位置都在方法Method里
出错后方法生成一个Exception对象,并把它交给JVM。这个对象里包括许多信息:错误类型,错误位置。JVM负责处理Exception对象
这种生成Exception对象并交给系统的过程叫抛出意外throwing an exception
一个方法抛出意外后,JVM就试图在“调用栈”里找能处理这个类型Exception对象的方法。找到就执行,找不到程序中止。

出错的处理方式

以前正常流程代码和问题处理代码相结合。现在将正常流程代码和问题处理代码分离,以提高阅读性。

public static int bbb(int k) {
   
		if (k > 100) {
   
			// 输出正常处理
			return 0;
		} else if (k > 10) {
   
			return -3;
		} else if (k > 0) {
   
			return -2;
		} else {
   
			return -1;
		}
	}

可以根据返回值判断程序的执行情况,如果>=0表示正常执行完毕,如果<0,则返回不同的负值表示不同的运行
情况。调用方法时可以根据不同的返回值进行不同的处理java中引入异常对象的目的在于给调用方更加详细的出错说明,以达到异常处理和正常代码分离,并且按照不同的异常进行处理的目的
其实异常就是Java通过面向对象的思想将程序中的问题封装成了对象,用异常类对其进行描述。1、不同的问题用不同的类进行具体的描述。2、问题很多,意味着描述的类也很多,将其共性进行向上抽取就形成了异常体系。

异常

Java异常是Java提供的用于处理程序中错误的一种机制

  • 所谓错误是指在程序运行的过程中发生的一些异常事件。如除0溢出、数组下标越界、所需要读取的文件不存在
  • 设计良好的程序应该在异常发生时提供处理这些错误,使得程序不会因为异常的发生而阻断或者产生不可预见的结果
  • Java程序的执行过程中如果出现异常事件,可以生成一个异常类对象,该异常对象封装了异常事件的信息并经
  • 被提交给Java运行时系统,这个过程称为抛出异常throw当Java运行时系统接收到异常对象时,会寻找能处理这一异常的代码并把当前异常对象交给其处理,这个过程称为捕获异常
  • Java异常处理的关键字有throws、throw、try、catch、nally共5个关键字

异常用途
异常就是在程序运行时由代码所产生的不正常状态。换句话说,异常就是一个运行时不支持异常处理的计算机语言中,错误必须被人工进行检查和处理,这显然麻烦而低效
Java语言提供了异常处理机制,为方法的异常终止和出错处理提供了清楚的接口

  • 1、用来在发生运行异常时告诉程序如何控制自身的运行,以防止错误的进一步恶化
  • 2、每个方法必须对他可能抛出的异常进行预先声明,在定义方法时,必须声明这个方法可能会抛出哪一种或几种异常

异常的分类

JavaSE中定义了很多异常类,这些类可以对应各种各样可能出现的异常事件。

int k=0;
System.out.println(100/k);
System.out.println("end...");
 //允许则会发现出现报错ArithmeticException,同时显示出错行号,但是看不到end...的输出

在这里插入图片描述
Throwable类是Java异常类型的顶层父类,一个对象只有是 Throwable 类的(直接或者间接)实例,他才是一个异常对象,才能被异常处理机制识别

在这里插入图片描述
Java异常可以分为3大类
所有异常对象的父类为Throwable—Object
1、Error及其子类:错误,一般指的是虚拟机的错误,是由Java虚拟机生成并抛出,程序不能进行处理所以也不加处理,例如OutOfMemoryError内存溢出、调用栈溢出StackOverFlowError
2、RuntimeException及其子类:运行时异常(非受检型异常),是由于编程bug所导致,希望越早发现越好,所以不进行处理,直接中断报错即可,编程人员针对报错信息修改程序bug来解决问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值