JavaSe基础(22)-- 异常与处理

异常分类

什么异常

  • 异常就是出现错误的情况

为什么需要异常

  • 我们要对异常进行捕获处理,提高我们软件的安全性和健壮性

异常分类

  • 异常也是一个对象
  • 异常对象

    JavaSe基础(22)-- 异常与处理_第1张图片

    Throwable 当出现问题的时候 程序终止 错误或异常下面的语句不在执行
    |–Error 由于运行程序的环境出现的问题
    比如:JVM出现了问题。
    大多数是以Error结尾
    我们不需要处理
    |–Exception 程序内部出现了问题,我们需要解决处理
    |— RuntimeException
    运行时出现的异常,编译期间不出现问题
    是不需要手动处理
    例如:1/0
    |—MyCheckException
    在编译期间出现的异常,需要程序员,手动处理
    我们开发处理的异常,就是MyCheckException
    (非RuntimeException )

    RuntimeException 不需要处理
    出现RuntimeException,说明程序不严谨,也就是程序员的问题
    让程序员根据出现的异常,去让程序更严谨些。

    MyCheckedException
    是因为有些东西程序员不能准确的把握, 好比要在系统的Z:盘上读取文件
    Z:盘 程序员无法控制

异常对象的常用方法

  • getMessage()可以直接输出异常名称
  • printStactTrace()输出的不只是名称,还有其他的详细信息

处理异常

  • try…catch
  • try中检测到异常会将异常对象传递给catch,catch捕获到异常进行处理
  • JavaSe基础(22)-- 异常与处理_第2张图片

  • try…catch…finally

  • 不论是否出现异常都会执行到finally

常见异常

JavaSe基础(22)-- 异常与处理_第3张图片

注意事项

  • 多个异常如果有继承关系,将父类放在最后的catch内

throw、throws

  • throws 通常在声明方法时用来指定可能抛出的异常

    public void test() throws NullPointerException {
    
    }
    
  • throw 通常在方法中抛出一个异常对象

    public void test()  {
        throw new NullPointerException();
    }
    

1、一个图
2、五个关键字 try catch finally throws throw
3、使用总结

第一种方式   手动捕获异常 并进行处理
    1、手动捕获异常  自己进行处理 try catch     
          try{  
            //可能会产生异常的语句
          }catch(Exception e){  //捕获产生的异常对象
       // 对产生的异常 进行处理的语句
         }  
      如果try语句块中 没有产生异常  则 catch不执行   否则会到相应的catch中 进行处理

2、 手动捕获异常  自己进行处理  try catch finally
          try{  
            //可能会产生异常的语句
          }catch(Exception e){  //捕获产生的异常对象
       // 对产生的异常 进行处理的语句
         }  finally {
             // try语句块中  无论 是否 有异常产生  都会执行  里面的语句      
            // 主要用于关闭 系统的资源  和  网络连接
         }
注意: catch 和 finally 都不能各自单独存在  
        因为 catch用于捕获异常 并进行处理  finanlly 无论是否有异常都执行

第二种处理异常的方式  
    系统利用throws 将异常抛出    谁调用谁处理
           public  void get() throws  Exception {    }

第三种处理异常方式  手动抛出异常  throw     
           a、找到一个合适的异常类
           b、创建该异常类的对象    修改异常提示信息
           c、 throw手动  将自己创建的 异常对象抛出
            public void get(int a){
        if(a<0){
            throw new ArithmeticException("不能为负数");
        }else if(a==0){
            throw new ArithmeticException("不能为0");
        }else{
             System.out.println( 1/ a);
        }
    }
第四种处理异常方式  自定义异常 
       a、创建一个 Exception  或 RuntimeException的子类
       b、创建两个构造器  一个没有参数  一个含有String类型参数的 构造器
        一般情况下  自定义异常 和 手动抛出一起使用

你可能感兴趣的:(JavaSe基础(22)-- 异常与处理)