异常(五)

1.异常
  1.1程序执行过程中出现的影响程序正常运行的现象
  1.2异常语法
    try{
      //代码块
    }catch(异常类型1 e1){
  
    }catch(异常类型2 e2){

    }...{

    }finally{

    }
  注意:try:表示可能出现异常的代码块
     catch:抓取异常,并进行处理
       可以抓取多个异常,异常的范围要从小到大抓取,并且只会执行第一个匹配的异常类型
     finally:最终的,不管是否出现异常,finally中的代码块始终会执行,
       除虚拟机停止(System.exit(1))这种情况外
  注意:finally和return的执行顺序:先执行return,把返回结果保存在返回结果区域,并没有返回,
    再执行finally完后,最后,把保存在结果区域的结果返回给调用者

运行结果:

 1 package Day12六;
 2 
 3 import java.util.InputMismatchException;
 4 import java.util.Scanner;
 5 import org.apache.log4j.Logger;
 6 
 7 public class Test12 {
 8     private static Logger logger=Logger.getLogger(Test12.class.getName());
 9     public static void main(String[] args) {
10         try{
11             
12             Scanner input=new Scanner(System.in);
13             System.out.print("请输入被除数:");
14             int num1=input.nextInt();
15             logger.debug("输入被除数:"+num1);
16             System.out.print("请输入除数:");
17             int num2=input.nextInt();
18             logger.debug("输入除数:"+num2);
19             System.out.println(String.format("%d/%d=%d", num1,num2,num1/num2));
20             logger.debug("输出运算结果:"+String.format("%d/%d=%d", num1,num2,num1/num2));
21         }catch(InputMismatchException e){
22             System.out.println("被除数和除数必须是整数"+e);
23         }catch(ArithmeticException e){
24             logger.error(e.getMessage());
25         }catch(Exception e){
26             logger.error(e.getMessage());
27         }finally{
28             System.out.print("感谢使用本程序!");
29         }
30     }
31     
32 }
代码示例

  1.3throws 声明异常
    a.就是当当前方法,不能解决这个异常的时候,必须把这个异常交给上一个调用者处理
    b.语法:
      访问修饰符 返回值类型 方法名(参数列表)[throws 异常]{

      }

运行结果:

 1 package Day12六;
 2 /**
 3  * 使用throw在方法内抛出异常
 4  * @author Administrator
 5  *
 6  */
 7 public class Person {
 8     private String name="";        //姓名
 9     private int age=0;            //年龄
10     private String sex="男";    //性别
11     /**
12      * 设置性别
13      */
14     public void setSex(String sex) throws Exception{
15         if("男".equals(sex) || "女".equals(sex)){
16             this.sex=sex;
17         }else{
18             //抛出异常
19             throw new Exception("性别必须是"男"或者"女"!");
20         }
21     }
22     /**
23      * 输出基本信息
24      */
25     public void print(){
26         System.out.println(this.name+"("+this.sex+","+this.age+"岁)");
27     }
28 
29         public static void main(String[] args) {
30         Person p=new Person();
31         try{
32             p.setSex("1");
33         }catch(Exception e){
34             System.out.println(e.getMessage());
35             e.printStackTrace();
36         }
37     }
38 }
代码示例


2.java异常体系
  throwable
    error:出现不能通过程序处理的错误
    Exception:可以同程序抓取或者抛出的错误
      检查异常(非运行时异常):编译阶段会出现的异常
        SQLException,IOException,ClassNotFoundException
      非检查异常(运行时异常RunTimeException):运行阶段会出现的异常
        NullPointerException,ArrayIndexOutOfBoundsException,ClassCastException
    注意:checked异常,是必需处理的
       运行时异常,可以不处理
3.导入第三方jar包
  第一步:右击工程名,新建一个文件夹(Fold),名字为lib
  第二步:把第三方jar包复制到lib目录下
  第三步:右击工程名--->properties
      --->java build path
      --->libraries
      --->add jar
      --->再从项目中的lin目录下选中你要的jar包
      --->确定
4.使用log4j
  第一步:导入log4j jar包
  第二步:写配置文件log4j.properties(放在src下)
    注意:文件名和文件路径
    (开发) (生成)
    log4j.rootLogger=debug | info
  第三步:使用log4j
    a.导入log4j类
      import org.apache.log4j.Logger;
    b.在指定类中,写属性
      privatr static Logger logger=Logger.getLogger(指定类名.class);
    c.在指定行写日志
      logger.debug("日志信息")
      logger.info("信息");

运行结果:

 1 package Day12六;
 2 
 3 import org.apache.log4j.Logger;
 4 
 5 public class Test11 {
 6     
 7     private static Logger log=Logger.getLogger(Test11.class);
 8     
 9     public static void main(String[] args) {
10         String str="abc";
11         try{
12             int i=Integer.parseInt(str);
13         }catch(Exception e){
14             log.debug("出现错误!");
15         }
16     }
17 }
代码示例
原文地址:https://www.cnblogs.com/yang82/p/7061560.html