zoukankan      html  css  js  c++  java
  • 异常

     什么是异常:

    写/执行程序中,遇到异常,需要异常抛出来说明代码出现了问题,抛给使用者,处理异常。

    异常是Java应用程序抛出和处理的非常严重,它可以分为Checked异常和运行时异常

    Checked异常必须捕获或者声明抛出,否则无法编译成功,运行时异常不要求捕获或者声明抛出

    Java中的异常处理通过五个关键字来实现;

    try   catch  finally throw  throws 


    1.异常处理机制::::::是专门  应对  异常出现后,如何解决该异常的一种手段。

    throw:扔 抛出异常  throw new Exception("Msg");
    throws:  声明异常

    2.try catch中有return的情况
    catch中有return,但是return以分号结束  ,finally先执行   回到return

    3.在真实开发中,如果我们定制了工具类,工具类中有特别复杂的方法,需要各种断定,这个时候,工具类的方法一定
    有一个机制,就是异常上抛的机制。作用:为了工具的使用方,可以感知到这个异常。

    4.try { 可能出现异常的代码}
      catch(){}
      finally{
      }
      throws
      throw new Exception();

    package cn.javaoppday01;
    
    import java.util.Scanner;
    
    import org.apache.log4j.Logger;
    
    public class Test {
        private static Logger logger=Logger.getLogger(Test.class.getName());
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            //处理方式1:---if 逻辑
            Scanner input =new Scanner(System.in);
            System.out.println("请输入第一个数");        
            if(input.hasNextInt()==true){            
                int num1 =input.nextInt();
                System.out.println("请输入二个数");
                int num2 =input.nextInt();
                if (num2==0){
                    System.out.println("除数不能为零,程序退出");
                    logger.error("除数不能为零,程序退出");
                    System.exit(1);
                
            }else{
                int jg =num1/num2;
                System.out.println(jg);
                }
            }else{
                    System.out.println("你输入的不是整数,程序退出");
                    System.exit(1);
                }
                
            }
            
            
        }
    程序中的异常

    运行的结果:

    请输入第一个数
    12
    请输入二个数
    0
    除数不能为零,程序退出
    log4j:WARN No appenders could be found for logger (cn.javaoppday01.Test).
    log4j:WARN Please initialize the log4j system properly.
    package cn.javaoppday01;
    
    import java.util.Scanner;
    
    public class Text11 {
    
        public static void main(String[] args) {
            Scanner input=new Scanner(System.in);
            System.out.println("请输入被除数");
            int num1 =input.nextInt();
            System.out.println("请输入除数");
            int num2=0;
            if (input.hasNextInt()){
                num2 =input.nextInt();
                if (0==num2){
                    System.err.println("输入的除数为0,程序退出");
                    System.exit(1);
                }else{
                    System.out.println(String.format("%d/%d=%d",num1,num2,num1/num2));                
                }
                
                
            }else{
                System.out.println("输入的除数不是整数 ,退出程序");
            System.exit(1);
            }
            input.close();
        }
    
    }
    程序中的异常2
    请输入被除数
    12
    请输入除数
    0
    输入的除数为0,程序退出

    2.使用异常机制

        异常处理机制,是专门应对异常出现后,如何解决该异常的一种手段
        异常是指程序在运行过程中所发生的不正常的时间,它会中断正在运行的程序
        Java编程语言使用异常处理机制为程序提供了错误处理机制
       异常处理关键字
         捕获异常
       try(试一试):执行可能产生异常的代码
       catch(抓住,捕获):捕获异常
       finally(最终):无论是否发生异常,代码总能执行
        

     注:在真实开发中,如果我们定制了工具类,工具类中有特别复杂的方法,需要各种断定,这个时候,工具类的方法一定有一个机制,就是异常上抛的机制,作用:为了工具的使用房,可以感知到这个异常

    throws 和throw的区别

    package cn.javaoppday01;
    
    import java.util.InputMismatchException;
    import java.util.Scanner;
    //throws声明异常,能给调用者处理,调用者必须进行try。。catch
    //位置:方法后面进行声明异常,多个异常使用逗号隔开
    public class Text8Throws1 {
    
        public static void divid() throws InputMismatchException,ArithmeticException,Exception {
            Scanner input =new Scanner(System.in);
            System.out.println("请输入第一个数");    
            int num1 =input.nextInt();
            System.out.println("请输入二个数");
            int num2 =input.nextInt();
            int jg =num1/num2;
            System.out.println(jg);
    
        }
        public static void main(String[] args) {
            //调用者必须处理
            try {
                divid();
            } catch (InputMismatchException e) {
                System.err.println("输入不匹配");
                e.printStackTrace();
            } catch (ArithmeticException e) {
                System.err.println("除数不能为0");
                e.printStackTrace();
            } catch (Exception e) {
                System.err.println(e.getMessage());
                e.printStackTrace();
            }
            
        }
    
    }
    throws
    package cn.javaoppday01;
    
    import java.util.InputMismatchException;
    import java.util.Scanner;
    
    public class Text9Thows2 {
    
        public static void main(String[] args)throws InputMismatchException,ArithmeticException,Exception {
            divid();
    
        }
        public static void divid() throws InputMismatchException,ArithmeticException,Exception {
            Scanner input =new Scanner(System.in);
            System.out.println("请输入第一个数");    
            int num1 =input.nextInt();
            System.out.println("请输入二个数");
            int num2 =input.nextInt();
            int jg =num1/num2;
            System.out.println(jg);
    
        }
    
    }
    throws

    声明异常:
       throws(抛出):声明方法可能要抛出的各种异常
         抛出异常: 
       throw(抛出):手动抛出异常

       throws声明异常,抛给调用者,调用必须进行try...catch
       位置:方法名后面进行 声明异常,多个异常使用逗号隔开
        //声明异常,多个异常用逗号隔开
      只要有throws,强制要求方法调度方法必须 手段1:try catch 2.继续向上抛
     public static void a() throws 异常类型{
         //可能出现异常的代码
     }
       throw:手动抛出异常
           throw new Exception("异常");

    异常的分类:

    printStactTrace的堆栈跟踪功能显示出程序运行到当前类的执行流程
      ex.getMessage();
        返回异常信息描述的字符串
      ex.printStactTrace();
      异常堆栈信息
      显示具体异常类型
      显示产生异常的具体位置


    当异常类型不匹配时,程序之间中断

    打印自定义处理信息:
     System.err.println(“自定义信息”);

  • 相关阅读:
    部署tomcat应用的三种方法
    【转】Linux下如何查看CPU信息, 包括位数和多核信息
    Tomcat端口占用的处理方式
    jconsole tomcat内存监控设置
    [转]成功的 Web 应用系统性能测试
    [转]Xmanager连接Linux远程桌面(后面添加了自己的部分)
    【转】配置远程jconsole监测tomcat
    大同小忆记五一大同之行
    理解Tomcat的WebappClassLoader(web应用类加载器)
    如何用PS批量为照片添加图片和文字水印
  • 原文地址:https://www.cnblogs.com/3020815dzq/p/8527697.html
Copyright © 2011-2022 走看看