zoukankan      html  css  js  c++  java
  • Java暑期学习第二十二天日报

    一、今日学习内容:

    今天学习了8.1.1在Java中如何进行异常处理的内容和8.2用log4j记录异常日志信息的内容。

    二、遇到的问题:

    关于Java中的异常处理应用不够熟练,不了解具体应该应用到什么地方。对于此个问题,上网查找资料进行深入了解。

    三、明日计划:

    明天计划学习8.3的综合实例和8.5的课后习题。

    今天学习的具体内容:

    1.在Java中如何进行异常处理:

    try...catch...finally 该语句用来捕获被命名为异常类的异常,并调用方法处理它。其中finally无论有无异常都会执行。
    通过throws抛出异常 声明抛弃异常是在一个方法声明中的throws子句中指明的。[修饰符] 返回类型 方法名(参数1,参数2,....)  throws 异常列表{}
    通过throw抛出异常 用于手动抛出异常对象,但可以抛出的异常对象必须是Throwable或其他子类的实例。
    自定义异常 建立自己的异常类型,只要建立Exception的一个子类就可以,子类不需要实际执行什么

    (1)try...catch异常处理代码块的基本形式如下:

    try           //监视

       {

        可能发生异常的代码块;

       }

       catch(异常类型  异常对象名)  //捕获并处理异常

             {

             异常处理代码块;

             }

       finally{            //最终执行

               }

    (2)实例:

    public class trycatchFinally {
        public static void main(String[] args) {
            try {
                int x=5;
                int y=x/0;
                System.out.println(y);
            }
            catch(Exception e )
            {
                e.printStackTrace();
            }
            finally
            {
                System.out.println("Over!");
            }
        }
    
    }

    测试截图:

    (3)finally带return语句返回的结果:

    下面代码中的finally是最后执行的,故返回的值是10

    public class trycatchFinally {
        
        public static void main(String[] args) {
            trycatchFinally t=new trycatchFinally();
            int m=t.get();
            System.out.println("m="+m);
        }
        public int get() {
            int x=0;
            try {
                 x=5;
                return x;
                }
            catch(Exception e )
            {
                e.printStackTrace();
            }finally
            {
                x=10;
                return x;
            }
    
       }
    }

    (3)finally中没有return x时

     当finally中没有return x时尽管令x=10了,但结果是5,这不是因为finally中的语句没有执行,而是因为返回的是try中的x。

    public class trycatchFinally {
        
        public static void main(String[] args) {
            trycatchFinally t=new trycatchFinally();
            int m=t.get();
            System.out.println("m="+m);
        }
        public int get() {
            int x=0;
            try {
                 x=5;
                return x;
                }
            catch(Exception e )
            {
                e.printStackTrace();
            }
            finally
            {
                x=10;
                
            }
            return x;
    
       }
    }

    4)catch语句可以有多个,如果用户要捕获Exception,需要将Exception放在最后,因为如果要捕获多个异常,异常的范围要按照从小到大的顺序叠放。

    (5)throws子句方法的基本形式

    [修饰符] 返回类型 方法名(参数1,参数2,....)  throws 异常列表{}

    public class ThrowsDemo {
        public static void main(String [] args) throws Exception{
            int x=5;
            int y=x/0;
            System.out.println(y);
        }
    
    }

    测试截图:

    (6)throws子句中同时可以声明多个异常

    该方法不对这些异常进行处理,而是声明抛弃它们。

    public class ThrowsDemo {
        public static void main(String [] args) throws IllegalArgumentException{
            int x=5;
            int y=x/0;
            System.out.println(y);
        }
    
    }

    (7)通过throw抛出异常

    形式:throw 异常名;

    throw关键字主要用于try块中,用来说明已经发生的异常情况,throw后面跟的异常对象用于说明发出的异常类型。

    import java.io.IOException;
    public class ThrowsDemo {
        public static void main(String [] args){
            try {
                System.out.println("正在运行程序...");
                throw new IOException("用户自行产生异常!");
            }
            catch(IOException e) {
                e.printStackTrace();
                
            }
            int x=5;
            int y=x/0;
            System.out.println(y);
        }
    
    }

    测试截图:

    (8)自定义异常

    基本形式:

    class 自定义异常  extends  父异常类名

    {

        类体;

    }

    实例:

    public class Zidingyi {
        public static void main(String []args) {
            Zidingyi z=new Zidingyi();
            try {
                z.add(2,3);
            }
            catch(MyException e)
            {
                e.printStackTrace();
            }
        }
        private void add(int a,int b) throws MyException{
            if(a==b)
                throw new MyException("输入的两个数相等!");
            else
                throw new MyException("输入的两个数不相等!");
        }
        
    }
    class MyException extends Exception{
        public MyException(String mag) {
            super(mag);
        }
        public MyException() {
            super();
        }
        public MyException(String message,Throwable cause) {
            super(message,cause);
        }
        public MyException(Throwable cause) {
            super(cause);
        }
        
    }

    测试截图:

     2.用log4j记录异常日志信息

    (1)如何使用

    需要先下载log4j的jar包,log4i组成三大组件为:

    Logger 决定什么日志信息应该被输出,什么日志信息应该被忽略。
    Appender 指定日志信息应该输出到什么地方,这些地方可以是控制台、网络设备和文件。
    Layout 指定日志信息的输出格式。
  • 相关阅读:
    Keepalived安装使用详解
    Django缓存使用方法
    Django常用命令及参数配置(Django 1.8.6)
    Python之Rpyc模块
    Hadoop:实战Web日志分析
    Hadoop:使用Mrjob框架编写MapReduce
    Hadoop:使用原生python编写MapReduce
    Hadoop安装
    LGOJP1850 换教室
    BZOJ4318: OSU!
  • 原文地址:https://www.cnblogs.com/Lizhichengweidashen/p/13386275.html
Copyright © 2011-2022 走看看