JAVA 异常 概念
基本格式:
try{
//代码区
}catch(Exception e){
//异常处理
}
-
假设我们现在执行一段代码,代码是求两个变量的商。 此时未加任何判断约束,除数为0的时候,运行代码就会抛出异常。
例如:
-
用try catch 捕获异常:
package com.exp;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class aaa {
public static void main(String[] args) {
// TODO Auto-generated method stub
Logger logger=LoggerFactory.getLogger(aaa.class);
int a=5;
int b=0;
try{
float c=a/b;
System.out.println("结果为:"+c);
}catch(Exception e){
logger.info("异常信息:",e);
}
System.out.println("我依然执行;");
System.out.println("我依然执行;");
System.out.println("我依然执行;");
System.out.println("我依然执行;");
System.out.println("我依然执行;");
}
}
打印结果:
10:05:03.392 [main] INFO com.exp.aaa - 异常信息:
java.lang.ArithmeticException: / by zero
at com.exp.aaa.main(aaa.java:15)
我依然执行;
我依然执行;
我依然执行;
我依然执行;
我依然执行;
( 注意,此时在catch里只捕获了异常, 所以catch后面的代码依然会执行,如果添加了return; 那么当catch中捕获到有异常后, 其余代码就不执行了。)
新建自己的异常, 有的时候异常不是系统检测出来的,比如说0 不能做除数, 比如我们就规定1做除数的时候,对我们来说是错误的,要用异常来处理,那么就要新建异常消息,throw new Exception。
例如:
package com.exp;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class aaa {
public static void main(String[] args) {
// TODO Auto-generated method stub
Logger logger=LoggerFactory.getLogger(aaa.class);
try {
System.out.println(testFun(3,1));
} catch (Exception e) {
// logger4j打印
logger.info("错误信息",e);
// 异常打印
// e.printStackTrace();
}
}
public static float testFun(float a,float b) throws Exception{
if(b==1){
throw new Exception("新规定:除数不能为1!!!");
}
float c=a/b;
return c;
}
}
打印结果:
10:08:54.495 [main] INFO com.exp.aaa - 错误信息
java.lang.Exception: 新规定:除数不能为1!!!
at com.exp.aaa.testFun(aaa.java:26)
at com.exp.aaa.main(aaa.java:14)