• JAVASE(复习)——异常


    所有的异常都是在java.lang包中的Throwable类中 

    一、Exception 和 Error 的区别

    exception:程序本身发生的异常,可以捕获抛出异常,一般用try—catch—finally捕获。

    error:发生在jvm层面的错误,程序无法处理。

    二、编译时异常和运行时异常

    • 编译时异常(Exception)

      • 都是Exception类及其子类

      • 必须显示处理,否则程序就会发生错误,无法通过编译

    • 运行时异常(RuntimeException)

      • 都是RuntimeException类及其子类

      • 无需显示处理,也可以和编译时异常一样处理

    三、Throwable类中的主要方法

    1. public class myThrowable extends Throwable{
    2. @Override //返回异常发生时的简要描述
    3. public String getMessage() {
    4. return super.getMessage();
    5. }
    6. @Override //返回异常对象的本地化信息
    7. public String getLocalizedMessage() {
    8. return super.getLocalizedMessage();
    9. }
    10. @Override //返回异常发生时的详细信息
    11. public String toString() {
    12. return super.toString();
    13. }
    14. @Override //在控制台上打印 Throwable 对象封装的异常信息
    15. public void printStackTrace() {
    16. super.printStackTrace();
    17. }
    18. }

     四、throws方式处理异常 

    throws是定义在方法上的,且跟在方法后面,异常类名一般抛出最大的Exception。

    一般调用方用的异常要大一些。

    定义格式:

    1. public void 方法名() throws 异常类名 {
    2. // 代码
    3. }

     例子:

    1. import java.text.ParseException;
    2. import java.text.SimpleDateFormat;
    3. import java.util.Date;
    4. public class myThrowable{
    5. public static void main(String[] args) throws Exception{
    6. System.out.println("开始");
    7. // method1();
    8. method2();
    9. System.out.println("结束");
    10. }
    11. //编译时异常,异常必需要手动给出,否则报红
    12. public static void method2() throws ParseException {
    13. String s = "2022-08-08";
    14. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    15. Date d = sdf.parse(s);
    16. System.out.println(d);
    17. }
    18. //运行时异常
    19. public static void method1() throws ArrayIndexOutOfBoundsException {
    20. int[] arr = {1, 2, 3};
    21. System.out.println(arr[3]);
    22. }
    23. }

    运行时异常: 运行时才会发生,所以在方法后面可以不写,运行时出现异常默认交给jvm处理

     编译时异常在编译时就会检查,所以一定要在方法后抛出异常处理

     四、throw异常和try-catch-finally 使用

    声明格式:

    一般在方法中抛出,表示手动抛出异常,一般结合try-catch-fianlly使用

    throw new 异常类型();

    例子:

    1. public class myThrowable{
    2. public static void main(String[] args){
    3. System.out.println("开始");
    4. method1();
    5. System.out.println("结束");
    6. }
    7. public static void method1() {
    8. try {
    9. int i = 1/0;
    10. System.out.println(i);
    11. } catch (Exception e) {
    12. e.printStackTrace();
    13. System.out.println("异常信息描述:"+e.getMessage());
    14. } finally {
    15. //
    16. }
    17. }
    18. }

     

     关于有返回值情况:

     

     

  • 相关阅读:
    java毕业设计爱音乐网站Mybatis+系统+数据库+调试部署
    【Linux】安装Nginx
    docker-machine常用
    spring-boot-webflux-demo-反应式接口
    VM Tools安装过程
    leetcode刷题方法总结—数组全解
    ARC147D Sets Scores
    Java多线程:BlockingQueue实现原理(Condition原理)
    基于声信道分析的电缆隧道人员定位技术
    计算机毕业设计Java大型商场应急预案管理系统(源码+系统+mysql数据库+lw文档)
  • 原文地址:https://blog.csdn.net/weixin_45754865/article/details/128172283