【Java笔记】(三):异常处理

异常与错误的分类

Throwable类是Java语言中所有异常和错误的超类

  • Error称为严重问题,不需要处理
  • Excepption称为异常类,他表示程序本身可以处理的问题
    • RuntimeException:在编译器检查不到,运行时出现问题
    • 非RuntimeException:编译前就必须要进行处理,否则程序无法通过编译

在这里插入图片描述

JVM的默认处理方案

如果程序出现了问题,我们又没有做任何处理,最终JVM会做默认的处理:

  • 将异常信息和出现异常的位置打印
  • 程序停止执行

异常处理try…catch

嗐,千篇一律,无需多言

try {
    
    
    //todo
} catch (Exception e) {
    
    
    e.printStackTrace();//打印异常信息
} finally {
    
    
    //todo
}

Throwable的成员方法

Message是在构造方法中进行赋值的

方法 描述
getMessage() 返回此异常的原因
toString() 返回该异常的原因和类名
printStackTrace() 将异常的类名,原因,出现异常代码的位置信息

编译时异常与运行时异常的区别

Java中异常分为两大类:编译时异常与运行时异常,也被称为受检异常和非受检异常

所有的RuntimeException类以及子类被称为运行时异常,其他的异常都是编译时异常

  • 编译时异常:必须显示处理,否则程序就会发生错误,无法通过编译,如果使用throws,谁调用谁处理
  • 运行时异常:无需显示处理,也可以和编译时异常一样处理

异常处理throws

并不是所有情况我们都有权限进行异常的处理,有时候可能出现的异常我们是处理不了的

针对这种情况,Java提供了throws解决方案,格式是跟在方法括号后面

public void yourMethod() throw 异常类名 {
    
    
	//todo
}

异常只是被抛出当前代码块了,但是在哪里使用还是需要进行try…catch的

自定义异常类

只要我们的类继承RuntimeException或者Exception就可以成为其中一员

扫描二维码关注公众号,回复: 12886913 查看本文章

编写一个异常类:

public class ScoreException extends Exception {
    
    
    public ScoreException() {
    
    
        
    }
    public ScoreException(String message) {
    
    
        super(message)
    }
}

使用这个异常:

public class GenericDemo {
    
    
    public void checkScore(int score) throws ScoreException {
    
    
		if (score<0 || score>100) {
    
    
            throw new ScoreException();//使用throw抛出这个异常
        } else {
    
    
            System.out.println("分数正常!");
        }
	}
}

throws和throw的区别

throws:

  • 用在方法声明后,跟的是类名
  • 表示抛出异常,由该方法调用者来处理
  • 表示出现异常的一种可能,并不一定会发生这些异常

throw:

  • 用在方法体内,跟的是异常对象名
  • 表示抛出异常,由方法体内的语句进行处理
  • 执行throw一定是抛出了某种异常

猜你喜欢

转载自blog.csdn.net/m0_46521785/article/details/114676808
今日推荐