java面向对象:异常的捕获与处理

异常的捕获与处理

一、对异常的介绍

异常(Exception)是导致程序中断执行的一种指令流。异常出现时,异常之前的程序是可以正常运行的。

面试题:Error和Exception的区别

  • Error错误;Error类以及他的子类的实例,代表了JVM本身的错误。错误不能被程序员通过代码处理,Error很少出现。
  • Exception异常;Exception以及他的子类,代表程序运行时发送的各种不期望发生的事件。可以被Java异常处理机制使用,是异常处理的核心。

二、异常处理格式

try {
	有可能出现的异常语句
}catch (异常类  对象) {
	异常的处理语句
}......
finally {
	异常的统一出口
}

以上的三个关键字出现的组合可以有三种:(catch可以一次出现多个)
try…catch
try…finally
try…catch…finally

代码示例:

try {
	System.out.println(10/0);
}catch(ArithmeticException e) {
	System.out.println("异常已被处理。");
}

如何取得异常的完整信息? 用printStackTrace();方法
代码示例:

try {
	System.out.println(10/0);
}catch(ArithmeticException e) {
	e.printStackTrace();
}

三、throws关键字和throw关键字

  1. throws关键字
  • 在方法定义时,若该方法出现异常后,不希望进行处理,就使用throws抛出。
  • 若已经调用了throws声明的方法,那么在调用时必须明确使用try…catch进行异常捕获,因为该方法有可能产生异常。
  • 主方法也是方法,也可以用throws进行异常抛出,这时若产生异常,会交给JVM进行处理

代码示例:

class Person{
	public static int div(int x;int y)throws Exception{
		return x/y;
	}
}
public class Demo{
    public static void main(String[] args) { 
    	try {
    		System.out.println(Person.div(10/2));
    	}catch(Excepyion e) {
    		e.printStackTrace();
    	}
    }
 }
  1. throw关键字
    编写在语句之中的,表示人为进行异常的抛出。使用throw产生异常类对象。

代码示例:

public class Demo{
    public static void main(String[] args) { 
    	try {
    		throw new Exception("抛出");
    	}catch(Excepyion e) {
    		e.printStackTrace();
    	}
    }
 }
  1. 面试题:throws关键字和throw关键字的区别
  • throw关键字:用于方法内部主要表示进行人工的抛出;
  • throws关键字:主要在方法声明上使用,明确的告诉用户本方法可能会产生异常,同时该方法可能不处理此异常。

四、异常处理模型

用到关键字try, catch, finally, throw, throws关键字,上一节的代码均是代码模型的标准格式,在此不赘述。

五、RuntimeException类

在Integer类中关于parseInt()方法的定义:

public static int parseInt(String s) throws NumberFormatException

该方法中已经明确抛出一个异常,但调用时即使没有进行异常处理,也可以正常执行,这就属于RuntimeException范畴。

面试题:解释RuntimeException和Exception的区别

  • Exception是RuntimeException的父类,使用Exception定义的异常都要求使用异常处理;
  • RuntimeException可以由用户选择性的来进行异常处理。

常见的Exception和RuntimeException异常可以查看API文档。

六、assert断言

当程序执行到某些语句之后,其数据的内容一定是约定的内容,但是不影响程序的正常运行。

七、自定义异常类

可以继承两种父类:Exception和RuntimeException。

总结:

  • 异常的处理流程;
  • 异常的处理格式;
  • 异常的处理模型。

猜你喜欢

转载自blog.csdn.net/weixin_41550144/article/details/86564860