zoukankan      html  css  js  c++  java
  • 异常

    一、try-cathc-finally 异常处理

    1、

     1 package com.test1;
     2 
     3 import java.util.Scanner;
     4 
     5 public class Test1 {
     6 
     7     public static void main(String[] args) {
     8         Scanner input=new Scanner(System.in);
     9         System.out.print("请输入被除数:");
    10         int num1=input.nextInt();
    11         System.out.print("请输入除数:");
    12         int num2=input.nextInt();
    13         
    14         if(num1!=0 && num2!=0){
    15             System.out.println(num1+"/"+num2+"="+num1/num2);
    16             
    17         }else{
    18             System.out.println("分子分母不能为0");
    19         }
    20         
    21         
    22         
    23         
    24 
    25     }
    26 
    27 }
    if-else处理异

    2、try-catch-finally处理异常

     1 package com.test1;
     2 
     3 import java.util.InputMismatchException;
     4 import java.util.Scanner;
     5 
     6 public class Test2 {
     7 
     8     public static void main(String[] args) {
     9         Scanner input = new Scanner(System.in);
    10 
    11         try {
    12             System.out.print("请输入被除数:");
    13             int num1 = input.nextInt();
    14             System.out.print("请输入除数:");
    15             int num2 = input.nextInt();
    16             System.out.println(num1 + "/" + num2 + "=" + num1 / num2);
    17           
    18         }catch(InputMismatchException e){
    19             System.out.println("输入不匹配异常");
    20             return; 
    21         }catch(ArithmeticException e){
    22             System.out.println("分母不能为0");
    23         }catch (Exception e) {
    24             System.out.println("其他未知错误!!");
    25         } finally {
    26             System.out.println("感谢使用!!");
    27         }
    28 
    29     }
    30 
    31 }
    try-catch-finally处理异常

    3、throws声明异常

     1 package com.test1;
     2 
     3 import java.util.InputMismatchException;
     4 import java.util.Scanner;
     5 
     6 public class Test3 {
     7 
     8     public static void main(String[] args) throws InputMismatchException,ArithmeticException,Exception {
     9            Scanner input = new Scanner(System.in);
    10             System.out.print("请输入被除数:");
    11             int num1 = input.nextInt();
    12             System.out.print("请输入除数:");
    13             int num2 = input.nextInt();
    14             System.out.println(num1 + "/" + num2 + "=" + num1 / num2);
    15           
    16         
    17 
    18     }
    19 
    20 }
    throws声明异常

    4、throw自定义异常

     1 package com.test1;
     2 
     3 public class Student {
     4     private String sname;
     5     private int age;
     6     private String sex;
     7     
     8     public Student() {
     9     }
    10     public Student(String sname, int age, String sex) {
    11         this.sname = sname;
    12         try {
    13             this.setAge(age);
    14         } catch (Exception e) {
    15             e.printStackTrace();
    16         }
    17         this.setSex(sex);
    18     }
    19     public String getSname() {
    20         return sname;
    21     }
    22     public void setSname(String sname) {
    23         this.sname = sname;
    24     }
    25     public int getAge() {
    26         return age;
    27     }
    28     public void setAge(int age) throws Exception {
    29         if(age>0 && age<150){
    30             this.age = age;
    31         }else{
    32             throw new Exception("年龄只能在0到150之间");
    33         }
    34     }
    35     public String getSex() {
    36         return sex;
    37     }
    38     public void setSex(String sex) {
    39         if(sex.equals("男") || sex.equals("女")){
    40             this.sex = sex;
    41             
    42         }else{
    43             try {
    44                 throw new Exception("性别必须是男或女!");
    45             } catch (Exception e) {
    46                 e.printStackTrace();
    47             }
    48             
    49         }
    50         
    51     }
    52     
    53 
    54 }
    创建Student.java
     1 package com.test1;
     2 
     3 public class Test {
     4 
     5     /**
     6      * @param args
     7      */
     8     public static void main(String[] args) {
     9         Student stu=new Student("浩浩", 180, "男");
    10 
    11     }
    12 
    13 }
    创建Test.java测试类

    二、log4j记录日志笔记

     1 log4j日志
     2     1、log4j日志记录在控制台和文件代码
     3         log4j.rootLogger=debug,stdout,logfile
     4 
     5 ###log4j to Console###
     6 log4j.appender.stdout=org.apache.log4j.ConsoleAppender
     7 log4j.appender.stdout.Target=System.err
     8 log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout
     9 
    10 ###log4j to file###
    11 log4j.appender.logfile=org.apache.log4j.FileAppender
    12 log4j.appender.logfile.File=jbit.log
    13 log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
    14 log4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %p %F %M  %m%n
    15     2、解释
    16         log4j.rootLogger=输出级别,输出目的地
    17             2.1  输出级别
    18                 debug表示输出级别:fatal<error<warn<info<debug
    19                 fatal:指出严重的错误事件将会导致应用程序的退出。
    20                 error:指出虽然发生错误事件,但仍然不影响系统的继续运行。
    21                 warn:表示会出现潜在错误的情形。
    22                 info:在粗粒度级别上指明消息,强调应用程序的运行过程。
    23                 debug:指出细粒度信息事件,对调试应用程序是非常有帮助的。
    24                 debug:将输出fatal,error,warn,info,debug级别的日志,
    25                 error:只输出fatal,error级别的日志信息。
    26             2.2  输出目的地
    27                 2.2.1  ConsoleAppender :输出日志事件到控制台。
    28                     Target属性System.err表示把日志信息写到控制台。
    29                     SimpleLayout表示简单的格式化日志输出,它输出级别Level,后面跟着一个破折号,最后是日志消息。
    30                 2.2.2  FileAppender:输出日志事件到文件
    31                     (1)File属性jbit.log表示把日志输出到jbit.log文件
    32                     (2)PatternLayout根据指定的转换模式格式化日志输出,需要配置layout.ConversionPattern转换模式,如果不配置,将使用默认的转换模式,
    33                     (3)ConversionPattern转换模式
    34                         %d :用来设置输出日志的日期和时间,默认的格式为ISO8601。也可以在其后指定格式,比如%d{yyyy-MM-dd HH:mm:ss},输出格式类似于2010-03-09 17:51:08
    35                         %m:用来输出代码中指定的消息
    36                         %n:用来输出一个回车换行符。
    37                         %l:用来输出日志事件的发生位置,包括类名,发生的线程,以及在代码中的行数。例如,如果输出为cn.jbit.log.Test11.main(Test11.java:21),说明日志事件发生在cn.jbit.log包下的Test11类的main线程中,在代码中的行数第21行.
    38                         %p:用来输出优先级,即debug,info,warn,error,fatal等
    39                         %F:用来输出文件名。
    40                         %M:用来输出方法名
    41 1、log4j日志记录在控制台和文件代码
    42     log4j.rootLogger=debug,stdout,logfile
    43 
    44 ###log4j to Console###
    45 log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    46 log4j.appender.stdout.Target=System.err
    47 log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout
    48 
    49 ###log4j to file###
    50 log4j.appender.logfile=org.apache.log4j.FileAppender
    51 log4j.appender.logfile.File=jbit.log
    52 log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
    53 log4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %p %F %M  %m%n
    54 2、解释
    55     log4j.rootLogger=输出级别,输出目的地
    56         2.1  输出级别
    57             debug表示输出级别:fatal<error<warn<info<debug
    58             fatal:指出严重的错误事件将会导致应用程序的退出。
    59             error:指出虽然发生错误事件,但仍然不影响系统的继续运行。
    60             warn:表示会出现潜在错误的情形。
    61             info:在粗粒度级别上指明消息,强调应用程序的运行过程。
    62             debug:指出细粒度信息事件,对调试应用程序是非常有帮助的。
    63             debug:将输出fatal,error,warn,info,debug级别的日志,
    64             error:只输出fatal,error级别的日志信息。
    65         2.2  输出目的地
    66             2.2.1  ConsoleAppender :输出日志事件到控制台。
    67                 Target属性System.err表示把日志信息写到控制台。
    68                 SimpleLayout表示简单的格式化日志输出,它输出级别Level,后面跟着一个破折号,最后是日志消息。
    69             2.2.2  FileAppender:输出日志事件到文件
    70                 (1)File属性jbit.log表示把日志输出到jbit.log文件
    71                 (2)PatternLayout根据指定的转换模式格式化日志输出,需要配置layout.ConversionPattern转换模式,如果不配置,将使用默认的转换模式,
    72                 (3)ConversionPattern转换模式
    73                     %d :用来设置输出日志的日期和时间,默认的格式为ISO8601。也可以在其后指定格式,比如%d{yyyy-MM-dd HH:mm:ss},输出格式类似于2010-03-09 17:51:08
    74                     %m:用来输出代码中指定的消息
    75                     %n:用来输出一个回车换行符。
    76                     %l:用来输出日志事件的发生位置,包括类名,发生的线程,以及在代码中的行数。例如,如果输出为cn.jbit.log.Test11.main(Test11.java:21),说明日志事件发生在cn.jbit.log包下的Test11类的main线程中,在代码中的行数第21行.
    77                     %p:用来输出优先级,即debug,info,warn,error,fatal等
    78                     %F:用来输出文件名。
    79                     %M:用来输出方法名
    log4j记录日志笔记

    三、log4j案例

     1 log4j.rootLogger=debug,stdout,logfile
     2 
     3 ###log4j to Console###
     4 log4j.appender.stdout=org.apache.log4j.ConsoleAppender
     5 log4j.appender.stdout.Target=System.err
     6 log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout
     7 
     8 ###log4j to file###
     9 log4j.appender.logfile=org.apache.log4j.FileAppender
    10 log4j.appender.logfile.File=jbit.log
    11 log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
    12 log4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %p %l %F %M  %m%n
    log4j.properties
     1 package com.test;
     2 
     3 import java.util.InputMismatchException;
     4 import java.util.Scanner;
     5 
     6 import org.apache.log4j.Logger;
     7 
     8 public class Test {
     9     //1.创建日记对象
    10     private static Logger logger=Logger.getLogger(Test.class.getName());
    11 
    12     public static void main(String[] args) {
    13       try {
    14         Scanner input=new Scanner(System.in);
    15           System.out.print("请输入被除数:");
    16           int num1=input.nextInt();
    17           logger.debug("输入被除数:"+num1);
    18           
    19           System.out.print("请输入除数:");
    20           int num2=input.nextInt();
    21           logger.debug("输入除数:"+num2);
    22           
    23           System.out.println(String.format("%d /%d=%d", num1,num2,num1/num2));
    24           logger.debug("运算结果:"+String.format("%d /%d=%d", num1,num2,num1/num2));
    25     }catch(InputMismatchException e){
    26         logger.error("除数和被除数必须是整数!",e);
    27     }catch(ArithmeticException e){
    28         logger.error(e.getMessage());
    29     } catch (Exception e) {
    30         logger.error(e.getMessage());
    31     }finally{
    32         System.out.println("欢迎使用!!");
    33     }
    34       
    35       
    36       
    37     }
    38 
    39 }
    Test.java
  • 相关阅读:
    Java-----Excel转HTML
    UI_拖动View
    查找——图文翔解Treap(树堆)
    android 三级菜单 BaseExpandableListAdapter
    New Relic——手机应用app开发达人的福利立即就到啦!
    安卓 下载多线程带进度条
    大数据
    Android学习路线(六)为Android应用加入ActionBar
    JavaScript日期对象使用总结
    经典二叉树
  • 原文地址:https://www.cnblogs.com/holly8/p/5683208.html
Copyright © 2011-2022 走看看