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基础 —— 异常的主要内容,如果未能解决你的问题,请参考以下文章