Java基础 —— 异常

Posted 行稳方能走远

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java基础 —— 异常相关的知识,希望对你有一定的参考价值。

异常的概念及分类

  • 什么是异常
    • 异常是指在程序的运行过程中发生的一些不正常事件。比如:除0溢出、数组下标越界、所要读取的文件不存在。
  • 异常导致的后果
    • 项目JAVA程序的执行过程中如出现异常事件,可以生成一个异常类对象,该异常对象封装了异常事件的信息,并将其被提交给JAVA运行时系统,这个过程称为抛出异常,不处理的话会直接导致程序直接中断。
  • 如何防止程序中断
    • 设计良好的程序应该在程序异常发生时提供处理这些异常的方法,使得程序不会因为异常的发生而阻断或产生不可预见的结果。
  • 异常的分类
    在这里插入图片描述
  • JAVA异常处理机制
    在这里插入图片描述

异常的处理try-catch-finally

在这里插入图片描述

例如下面这个例子,虽然提示出错,但还是能输出"end"

class Person
{
	String name;
}


public class test {
	public static void main(String[] args) {
	
		Person p = null;//空指针异常
		try{
			p.name = "xiaoMing";
		}finally{
			System.out.println("end");
		}
	}
}

异常捕获:

class Person
{
	String name;
}


public class test {
	public static void main(String[] args) {
	
		Person p = null;//空指针异常
		try{
			p.name = "xiaoMing";
			
		//或者catch(Exception e)代表捕获所有异常 后面加个e类似int a变量名
		}catch(java.lang.NullPointerException e){//捕获异常,就是编译器里面提示的具体错误
			System.out.println("空指针,检查下是否没有初始化");
		}
		finally{
			System.out.println("end");
		}
	}
}

异常抛出throw(s)

在这里插入图片描述
在这里插入图片描述
例子:

class Bar{
	
	int age;
	
	public Bar(int age){
		this.age = age;
	}
	void check()throws IllegalArgumentException{//throws用于在方法上标识要暴露的异常
		if (age < 18){
			throw new IllegalArgumentException("年纪太小");//throw抛出异常
		}
	}
}

public class test {
	public static void main(String[] args) {
		
		Bar b = new Bar(15);
		try{
			b.check();
		}catch(IllegalArgumentException e){//alt+?快捷键
				System.out.println(e.getMessage());//输出年纪太小
				e.printStackTrace();			   //输出异常
		}
		finally{
		System.out.println("end");
		}
	}

}

运行结果:

年纪太小
java.lang.IllegalArgumentException: 年纪太小
	at Bar.check(test.java:11)
	at test.main(test.java:21)
end

自定义异常

在这里插入图片描述
例子:


class Bar{
	
	int age;
	
	public Bar(int age){
		this.age = age;
	}
	void check()throws AgeLessThanEighteenException{//throws用于在方法上标识要暴露的异常{
		if (age < 18){
			throw new AgeLessThanEighteenException("年纪太小");//throw抛出异常
		}
	}
}

class AgeLessThanEighteenException extends Exception{
	private String message;
	public AgeLessThanEighteenException(String message){
		this.message = message;
	}
}

public class test {
	public static void main(String[] args) {
		
		Bar b = new Bar(15);
		try{
			b.check();
		}catch(AgeLessThanEighteenException e){//这个属于前面PPT讲的受查异常,必须要进行catch处理
				System.out.println(e.getMessage());
				e.printStackTrace();			
		}
		finally{
		System.out.println("end");
		}
	}

}

结果:

null
AgeLessThanEighteenException
	at Bar.check(test.java:11)
	at test.main(test.java:28)
end

以上是关于Java基础 —— 异常的主要内容,如果未能解决你的问题,请参考以下文章

片段中的 EditText 上的空指针异常 [重复]

Java异常处理机制

Java异常处理的基础知识

Java 基础 ------- 异常

3.3 java基础总结①异常②自定义异常

片段 getArguments() 空指针异常