异常

一、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

 

posted @ 2016-07-19 00:05  红酒人生  阅读(317)  评论(0编辑  收藏  举报