zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Lucene
    SQL优化以及索引
    Mysql优化
    RocketMQ
    RocketMQ
    Session共享
    Linux安装Nginx
    初识nginx
    跨域,防止表单重复提交
    HttpClient案例
  • 原文地址:https://www.cnblogs.com/usegear/p/15759668.html
Copyright © 2011-2022 走看看