【Java】Exception 异常处理
2021-02-13 15:16
标签:event 多个 连接超时 捕获异常 oom ror 运行时异常 detail 图片 在Java程序中,发生的不正常情况称为异常 -【逻辑错误和语法错误】不是异常! - 分为 Error错误 和 Exception异常 - Error 是JVM无法解决的错误问题 例如内存溢出 StackOverFlow 和 OOM - Exception一般处理意料之外的问题 例如 空指针 NullPointerException,数组越界 OutofIndexException,连接超时异常,读取不到异常 对于异常的处理,1终止程序运行,2在编写时,就设置存在异常的可能 - 把编译期可能存在的异常交给运行期处理 - 向上继续抛出 使用场景: - 父类中被重写的方法没有throws抛出异常,子类也不能使用throws,如果子类重写的方法发生异常必须try-catch处理 - 方法a中调用了其他多个方法,是一种递进关系,被调用的方法应该声明throws抛出,统一在方法a中try-catch处理 - THROW 手动创建异常并抛出异常 自定义异常类 序列化UID 保存记录标识值? https://blog.csdn.net/seabreezesuper/article/details/70141844 【Java】Exception 异常处理 标签:event 多个 连接超时 捕获异常 oom ror 运行时异常 detail 图片 原文地址:https://www.cnblogs.com/mindzone/p/12725913.html编译时异常和运行时异常
编译时异常 Checked
运行时异常 UnChecked
两种处理机制 Try - Catch - Finally Throws - Throw
// 程序执行过程种出现异常,在异常代码出生成对应异常类的异常对象并抛出
// 一旦异常对象抛出,程序运行终止
@Test
public void exceptionTest1(){
try{
// 可能出现的异常的代码
}catch (Exception exception){ // 出现的异常匹配参数种的异常,进入catch代码块处理异常
// 处理异常的方式
exception.printStackTrace();
}finally {
// 无论是否发生异常,最终必须执行的代码块
// 适用在最后必须执行的代码,比如释放资源
System.out.println("必须执行的代码!");
}
// finally 除了在try中直接系统退出之外,一定会执行
// 如果try中出现了 return 结束方法,也要等finally执行完毕,再回到try执行return
}
@Test
public void exceptionTest2(){
try{
}finally { // 可以不处理异常直接执行finally,但是不要这么用
}
}
@Test
public void exceptionTest3(){
try{
// 可以分多个catch 逐一捕获异常
}catch (NullPointerException nullPointerException){
nullPointerException.printStackTrace();
}catch (ArrayIndexOutOfBoundsException arrayIndexOutOfBoundsException){
arrayIndexOutOfBoundsException.printStackTrace();
}catch (ArithmeticException arithmeticException){
arithmeticException.printStackTrace();
}catch (Exception exception){
// 当所有异常都没有捕获到时,最后交给总异常处理
exception.printStackTrace();
}
// 不要一开始最头上就写总异常捕获,总异常直接捕获处理后,下面的详细异常捕获不到,写了白写
}
// 如果我们不用try - catch - finally 进行处理,可以直接抛出异常
// throws + 对应的异常类型 ,声明这个方法可能发生的异常,如果发生异常,把异常向上抛出
// 本质上说,throws 并没有解决异常,只是把异常丢给放法的调用者解决,调用者可以自行try - catch 也可以继续向上抛出
// 方法出现异常时,在异常代码处生成异常对象,如果此异常符合throws所包含的异常类型时,异常对象抛出
public void throwsMethod() throws Exception{
}
void throwException(int age) throws Exception {
if (0 100) throw new Exception("不合理的年龄");
}
/*
编译时异常 Exception
运行期异常 RuntimeException
*/
// 自定义异常需要继承异常类
public class WTF_Exception extends Exception{
// 未知的常量ID
static final long serialVersionUID = -3387516993124229948L;
public WTF_Exception(){
}
public WTF_Exception(String message){
super(message);
}
}
文章标题:【Java】Exception 异常处理
文章链接:http://soscw.com/index.php/essay/54883.html