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 }