异常机制 Exception

异常机制 Exception

  • 抛出异常
  • 捕获异常
  • 关键字:
    • try
    • catch
    • finally
    • throw 主动抛出异常,一般用于方法中
    • throws 用于方法外,后续使用这个方法需要try/catch
public class A {
    public static void main(String[] args) {
        int a = 1;
        int b = 0;

        //Ctrl+Alt+T 快捷键
        
        //假设要捕获多个异常,从小到大捕获

        try {//try监控区域
            System.out.println(a/b);
        }catch (Error e){//catch(想要捕获的异常类型) 捕获异常
            System.out.println("Error");
        }catch (Exception e){
            System.out.println("Exception");
        }
        catch (Throwable e){
            System.out.println("Throwable");
        }
        finally {//处理善后工作
            System.out.println("finally");
        }//finally  可以没有,    如有io操作,资源相关,可在finally关闭
    }


}

自定义异常

用户自定义异常类,继承Exception类即可

分为以下步骤:

  • 创建自定义异常
  • 在方法中通过throw关键字抛出异常对象
  • 如果在当前抛出异常的方法中处理异常,可以使用try-catch语句捕获并处理;否则在方法的声明处通过throws关键字指明要抛出给方法调用者的异常,进行下一步
  • 在出现异常方法的调用者中捕获并处理异常
package OOP.Demo.If;

/**
 * @version: java version 1.8
 * @Author: 14
 */
//自定义异常
public class MyException extends Exception {

    //传递数字>10
    private int num;
    public MyException(int num) {
        this.num = num;
    }
    //toString


    @Override//打印异常信息
    public String toString() {
        return "MyException{num=" + num + "}";
    }
}
package OOP.Demo.If;

/**
 * @version: java version 1.8
 * @Author: 14
 */
public class test {
    //可能存在异常的方法
    static void test(int a) throws MyException{
        if (a>10){
            throw new MyException(a);
        }
        System.out.println(a);
    }

    public static void main(String[] args) {
        try {
            test(11);
        } catch (MyException e) {
            //增加处理异常的代码
            System.out.println("MyException"+e);
        }
    }
}

总结

  • 处理运行时异常,采用逻辑去合理规避,同时辅助try-catch处理
  • 在多重catch块后面,可以加上一个catch(Exception)来处理可能会被遗漏的异常
  • 对于不确定的代码,也可以加上try-catch,处理潜在的异常
  • 尽量去处理异常,而不是简单的调用printStackTrace()去打印输出
  • 具体如何处理异常,要根据不同的业务需求和异常类型决定
  • 尽量添加finally语句块释放资源
posted @ 2024-07-03 11:22  十四2001  阅读(1)  评论(0编辑  收藏  举报