Java学习第十四天<Error 和Exception><捕获和抛出异常><自定义异常><异常总结>
Error 和Exception
Error错误 无法预见
Exception异常 可预见
捕获和抛出异常
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(ArithmeticException e){//捕获异常类型 System.out.println("程序出现异常,变量不能为0"); }finally{//处理善后工作,可以不要(假设IO,资源可以用finally关闭) System.out.println("finally"); } //假设要捕获多个异常,要从小到大,相当与if else try {//try 监控区域 new Test().a(); }catch(Error e) {//最高为Throwable System.out.println("程序出现异常Error"); }catch(Exception e) {//最高为Throwable System.out.println("程序出现异常Exception"); }catch(Throwable t){//最高为Throwable System.out.println("程序出现异常"); }finally{//处理善后工作,可以不要(假设IO,资源可以用finally关闭) System.out.println("finally"); } } public void a(){ b(); } public void b(){ a(); } }
public class Test2 { public static void main(String[] args) { int a=1; int b=0; try { System.out.println(a/b);//ctrl+alt+t 包裹代码 } catch (Exception e) { System.exit(0);//关闭 e.printStackTrace();//打印错误站信息 } finally { } } }
package com.exception; public class Test3 { public static void main(String[] args) { new Test3().test(1,0); try { new Test3().test2(1,0); } catch (ArithmeticException e) { e.printStackTrace(); } } public void test(int a,int b){ if (b==0){// throw throw new ArithmeticException();//主动抛出异常,一般在方法里用,主函数里没有 } System.out.println(a/b); } //假设这个方法中,处理不了这个异常,方法上抛出异常 public void test2(int a,int b) throws ArithmeticException{ if (b==0){// throws throw new ArithmeticException(); }//调用用try catch System.out.println(a/b); } }
自定义异常
package com.exception.demo02; //自定义异常类 public class MyException extends Exception{ //传递数字>10,就异常; private int detail; public MyException( int a) { this.detail = a; } //toString 异常的打印信息 alt+insert @Override public String toString() {//e return "MyException{" + "detail=" + detail + '}'; } }
package com.exception.demo02; 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) {//抛出的被捕获 //这里可以增加一些处理异常的代码块(if 语句) System.out.println("MyException=>"+e); } } }
异常总结
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术