侧边栏壁纸
  • 累计撰写 793 篇文章
  • 累计创建 1 个标签
  • 累计收到 1 条评论
标签搜索

目 录CONTENT

文章目录

异常

Dettan
2021-04-10 / 0 评论 / 0 点赞 / 155 阅读 / 700 字
温馨提示:
本文最后更新于 2022-07-23,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。
强制性异常(CheckedException)和非强制性异常(UncheckedException)。
而java中除了RuntimeException外,都是强制性异常。

致命错误不用往上抛,直接抛出异常,因为运行不下去了。也可以往上抛,显示一个框。
非致命错误往上抛,也可以就地处理,往上抛浪费性能,抛到view层处理。
所有可抛出的异常都是继承自throwable类

error不用管,那是系统的错误,包括虚拟机错误和awt窗口处理错误等
Exception里分两大类
runtime异常 可以不处理,其它的必须处理,不处理编译时会报错
处理方式
1 . 异常可以抛到上级,让调用者处理 : 在方法定以后加上throws Exception1,Exception2。
2. 就地try catch 处理:
try{
 
}catch(Exception e){ //是否可以跟超类
	System.out.println("e.getMessage() = " + e.getMessage());
    e.printStackTrace() //从下往上,从外往里。
}catch(Exception e){ //处理多个异常
    
}finaly{ //触发异常后也会执行,上边有return之后还能执行,还能return,这里的语句除非虚拟机终止才不会执行
    //一般这里放释放资源的语句,即使出错也不会zus饿别的线程。
}
消极处理
try{ 

}finaly{
  //放必须执行的语句,不管异不异常 //一般这里放释放资源的语句,即使出错也不会zus饿别的线程。
}
finally
finally不会执行的情况
没有执行到try,那相应的finally也不会执行.
在try里执行了System.exit(0),退出了虚拟机
finally会执行的情况
在try里执行了return,这里会先将return的值保存,先执行finally里的内容,然后再返回,极不推荐在finally里修改返回值.
自定义异常 
然后 需要抛出的时候 throw new myException(“错误信息”);
1. 创建一个继承自Exception类或其子类的类,重写构造函数。
如果继承自runtimeException 的话就可以不接受处理异常。否则必须处理。
public class AgeOutofBoundsException extends Exception {

public AgeOutofBoundsException() {
super();
// TODO Auto-generated constructor stub
}

public AgeOutofBoundsException(String message) {
super(message);
// TODO Auto-generated constructor stub
}

}
2. 在有需要的函数里抛出异常
throw new AgeOutofBoundsException("年龄越界");
3. 在调用函数后处理异常。
throw 和 throws 区别
void test() throws 异常类型{ 
		throw 异常对象
}

是否可以抛出多个异常? 可以,多个异常之间逗号隔开
捕获异常是怎么捕获多个异常? 可以,多写个catch语句就行。不能在一个catch后面捕获两个异常,小范围异常在前

0

评论区