USEGEAR

导航

java学习-7-捕获异常处理

Java使用异常来表示错误,并通过try ... catch捕获异常;

1、Error错误是你的程序无能为力的,也无法捕获的,比如内存耗尽,最终会由JVM进行捕获打印出信息。几乎听天由命。但是老手程序员会遇见到做一些预见处理; 2、运行时错误RuntimeException的异常,如果不手动捕获最终也会交给JVM进行捕获处理,与手动捕获打印的信息差不多。所以最终在程序中呈现出来 3、要老命的CheckException异常,必须手动捕获or throw声明,IDE可以检查出,直接捕获处理即可


这种捕获后不处理的方式是非常不好的,即使真的什么也做不了,也要先把异常记录下来:

static byte[] toGBK(String s) {

  try { return s.getBytes("GBK"); }

  catch (UnsupportedEncodingException e)
    { // 先记下来再说:
       e.printStackTrace();
    }
return null;
}

 在java中,all的可能抛出异常的语句。都可以try...catch捕获。把可能发生的一场的语句放在try{...}中,然后catch捕获对应的Excwption机器子类。

public static void main(String[] args) {
    try {
        process1();
        process2();
        process3();
    } catch (IOException e) {
        System.out.println(e);
    } catch (NumberFormatException e) {
        System.out.println(e);
    }finally{ //finally语句不是必须的,1、可写可不写;2、总是最后执行 
  System.out.println("END");
} }

存在多个catch的时候,catch的顺序非常重要:子类必须写在前面

如果没有发生异常,就正常执行try { ... }语句块,然后执行finally。如果发生了异常,就中断执行try { ... }语句块,然后跳转执行匹配的catch语句块,最后执行finally

可见,finally是用来保证一些代码必须执行的。

如果方法声明了可能抛出的异常,那么就可以不写catch

public static void main(String[] args) {
    try {
        process1();
        process2();
        process3();
    } catch (IOException | NumberFormatException e) { // IOException或NumberFormatException
        System.out.println("Bad input");//不同异常,相同处理,可以合并
    } catch (Exception e) {
        System.out.println("Unknown error");
    }
}

 

 

感谢 https://www.liaoxuefeng.com/wiki/1252599548343744/1264738442933472

posted on 2022-01-03 15:32  USEGEAR  阅读(247)  评论(0编辑  收藏  举报