一、异常
异常有两种选择:throws和catch,一种是抛给调用者,另一种是在本方法中捕获处理。
选择标准:如果知道如何处理就catch,不知道如何处理就throws
异常种类:Throwable是父类, 1⃣️Error子类是系统错误不可控,所以不用抛出、不用处理 2⃣️Exception/RuntimeException是可控的要被控制,我们的代码不应有数组越界等错误 3⃣️Exception/IOException是文件读写错误,类加载错误
1⃣️2⃣️是不需要throws和catech的,3⃣️是需要throws或catch的,并且如果throws要列出所有可能抛出的IOException
public static void func1() throws IOException {//列出所有可能抛出的的IOException
try{
//检测代码
}catch(FileNotFoundException | UnKonwHostException) {
// 处理捕获异常
throw new ServeletException("xx"); //也可以再次抛出异常
}finally {
//最后一定执行的代码,常做一些关闭文件,释放资源的事情, 对于close也可能爆出异常,对此可以用带资源的try语句,保证最后关闭资源
}
}
二、日志
将提示信息按照不同级别打印到指定文件中
1.JDK的Logging
import java.io.UnsupportedEncodingException;
import java.util.logging.Logger;
public class Main {
public static void main(String[] args)
Logger logger = Logger.getLogger(Main.class.getName());
logger.info("Start process...");
try {
"".getBytes("invalidCharsetName");
} catch (UnsupportedEncodingException e) {
// TODO: 使用logger.severe()打印异常
}
logger.info("Process end.");
}
}
如果要打印到指定文件需要修改配置文件,JVM启动时传递的参数-Djava.util.logging.config.file=config-file-name
2.Commons Logging和Log4j
参考https://www.liaoxuefeng.com/wiki/1252599548343744/1264739436350112
3.SLF4J和Logback
https://www.liaoxuefeng.com/wiki/1252599548343744/1264739155914176