zoukankan      html  css  js  c++  java
  • 异常

    复制代码

        异常
    
    1.                    什么是异常?
    
    java程序在运行过程中出现的意外情况
    
    2.                    java中如何进行异常处理?
    
    java中的异常处理机制
    
                 try、catch、finally、throw、throws
    
                                                                try{
    
                                                                                        //有可能出现异常的代码
    
              }catch(异常类型){
    
                                 //对出现的异常进行捕获和处理
    
                          return;
    
                                                                                        //System.exit(1);// finally语句块将不执行
    
                          }finally{
    
                       //不管程序是否发生异常,都要执行的代码
    
                    }
    
               try…catch…finally一共有3种组合方式
    
                       try…catch…(catch可以有多种,但要注意先子类后父类的顺序)
    
                       try…catch…finally…
    
                       try…finally…
    
    
     3. 程序执行过程中出现的影响程序正常运行的现象
           3.1 异常语法
            try{
                //代码块    
            }catch(异常类型 e){
    
            }catch(异常类型 e2){
    
            }...{
    
            }finally{
            
            }
           注意:try 表示可能出现异常的代码块
             catch 抓取异常,并进行处理
                   可以抓取多个异常,异常的范围要从小到大抓取
                    并且只会执行第一个匹配的异常类型
             finally 最终的 不管是否出现异常,finally中的代码块始终会执行
                 除虚拟机停止(System.exit(1))这种情况外
             注意:finally 和 return 的执行顺序 先执行return
              把返回结果保存在返回结果区域,并没有返回,在执行finally 最后 把保存在结果区域的结        果返回给调用者
           3.2 throws 抛出异常
            a.就是当当前方法,不能解决这个异常的时候,必须把这个异常交给上一个调用者去处理
            b.语法
                访问修饰符 返回值类型 方法名(参数列表)[throws 异常]{
                }
    
        4.java异常体系
            Throwable
                |--    error:(出现不能通过程序处理的错误)        
                |--    Rxception::(可以同程序抓取或者抛出的错误)
                    |--检查异常(非运行时异常):编译阶段会出现的异常
                       SQlException
                       IOException 
                       ClassNotFoundException
                    |--非检查异常(运行时异常RunTimeException):运行简单会出现的异常
                       NullPointerException
                       ArrayIndexOutOfBoundException
                            ClassCastExeption
                注意:checked 异常,是必需处理的
                      运行时异常,可以不处理
    
    
    public class Test {
        private static Logger logger=Logger.getLogger(Test3.class.getName());
        public static void main(String [] args){
            Scanner input=new Scanner(System.in);
            System.out.print("请输入被除数:");
            int num1=input.nextInt();
            System.out.println("");
            System.out.print("请输入除数:");
            int num2=input.nextInt();
            try{
                System.out.println(num1/num2);
                System.out.println("感谢使用本程序!");
            }catch(InputMismatchException e){
                logger.error("出现错误!除数和被除数必须为整数!",e);
            }catch(ArithmeticException  e){
                logger.error(e.getMessage());
            }catch(Exception e){
                logger.error(e.getMessage());
            }finally {
                System.out.println("欢饮您使用本程序!");
            }
        }
    }
    
    
    public class TestEx {
            public static void main(String[] args){
                Scanner  console = new Scanner(System.in);
                try{
                    System.out.println("try开始");
                    int a = console.nextInt();
                    int b = console.nextInt();
                    System.out.println("try结束");
                }catch(InputMismatchException ee){
                    System.out.println("异常");
                 // ee.printStackTrace();
                    String mes = ee.getMessage();
                    System.out.println(mes);
                }catch(NullPointerException e){
                    System.out.println("输入的不是整数");
                 //    e.printStackTrace();
                }catch(ClassCastException e1){
                    System.out.println("类型转换异常");
                }
                System.out.println("运行结束");
            }
    }
    复制代码
  • 相关阅读:
    开源数据访问组件Smark.Data 1.8
    .NET应用加载容器KGlue
    TCP&UDP压力测试工具
    使用Beetle.Express简单构建高吞吐的TCP&UDP应用
    通过分析内存来优化.NET程序
    winsock I/O模型
    C++各大有名库的介绍
    深入研究 STL Deque 容器An InDepth Study of the STL Deque Container (By Nitron)
    C C++编程子资料库(小程序)
    VSS服务器安装配置(比较完整的一篇VSS服务器配置的文章)
  • 原文地址:https://www.cnblogs.com/abc199812/p/7019610.html
Copyright © 2011-2022 走看看