异常处理01 Error和Exception
异常 Exception
三种异常:检查行异常、运行时异常、错误(错误不是异常ERROR)
异常处理02 捕获和抛出异常
5个关键字:try、catch、finally、throw、throws
package com.exception;
public class TEST {
public static void main(String[] args) {
int a = 1;
int b = 0;
try{ //try监控区域
System.out.println(a/b);
}catch (Error e){ //cath捕获异常
System.out.println("程序出现异常,变量b不能为0");
}catch (Exception e){ //cath捕获异常
System.out.println("程序出现异常,变量b不能为0");
}catch (Throwable e){ //cath捕获异常
System.out.println("程序出现异常,变量b不能为0");
}finally { //处理善后工作,也可以不需要。
System.out.println("finally");
}
//catch可以有多个
//finally 可以不要finally ,假设是IO资源,这需要finally善后工作关闭
//快捷键: 选中想要测试的内容, CTRL + Alt + T
}
}
package com.exception;
public class TEST {
public static void main(String[] args) {
int a = 1;
int b = 0;
try{ //try监控区域
if (b==0){
throw new ArithmeticException(); //主动抛出异常
}
System.out.println(a/b);
}catch (ArithmeticException e){ //catch捕获异常 catch( 想要捕获的异常类型 )
System.out.println("程序出现异常,变量b不能为0");
}finally { //处理善后工作
System.out.println("finally");
}
}
}
package com.exception;
public class TEST {
public static void main(String[] args) {
try {
new TEST().test(1,0);
} catch (ArithmeticException e) {
e.printStackTrace();
}
}
//假设这方法中,处理不了这个异常。方法上抛出异常。
public void test(int a, int b){
if(b==0){
throw new ArithmeticException(); //主动抛出异常,一般在方法中使用
}
}
}
异常处理03 自定义溢出和经验小结
自定义异常类步骤:
创建自定义异常类。
在方法中通过throw关键字抛出异常对象
如果在当前抛出异常的方法中处理异常,可以使用try-catch语句捕获并处理;否者在方法的声明中通过throws关键字指明抛出给方法调用者的异常,继续进行下一步操作。
在出现异常方法的调用者中捕获并处理异常。
package com.exception;
public class TEST {
//可能会存在异常的方法
static void test(int a) throws MyException{
System.out.println("传递的参数为:"+a);
if(a>10){
throw new MyException(a); //抛出
}
System.out.println("OK");
}
public static void main(String[] args) {
try {
test(11);
}catch (MyException e){
System.out.println("MyException=>"+e);
}
}
}
package com.exception;
//自定义的异常类,要继承Exception
public class MyException extends Exception{
//传递数字>10
private int detail;
public MyException(int a){
this.detail = a;
}
//toString 方法构建 快捷键 ALT+ INSERT
@Override
public String toString() {
return "MyException{" +
"detail=" + detail +
'}';
}
}
经验总结
处理运行时异常,采用逻辑去合理规避同时辅助try-catch处理
在多重catch块后面,可以加一个catch (Excetion) 来处理可能会被遗漏的异常
对于不明确的代码,也可以加上try-catch,处理异常 ,也有快捷键 ALT + ENTER
尽量去处理异常,切忌只是简单地调用printStackTrace() 去打印输出
具体如何处理异常,要根据不同的业务需求和异常类型去决定
尽量添加finally语句块去释放占用的资源
原创文章:https://www.qqhhs.com,作者:起航®,如若转载,请注明出处:https://www.qqhhs.com/49.html
版权声明:本站提供的一切软件、教程和内容信息仅限用于学习和研究目的,请于下载的24小时内删除;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络收集整理,如果您喜欢该程序和内容,请支持正版,购买注册,得到更好的正版服务。我们非常重视版权问题,如有侵权请邮件与我们联系处理。敬请谅解!