Java 异常处理
#开始
刚开始接触Java的时候 看不到异常处理的意义所在 真是...现在发现似乎大有用处
#代码
package ch1; import java.rmi.RemoteException; public class myException{ public static void main(String[] args) throws RemoteException,myException2 { //这里需要定义抛出的异常类 try { int a=3; //修改这里抛出不同的异常 if(a==1) { throw new RemoteException("异常3"); //抛出一个默认的异常 } if(a==2) { throw new Exception("异常4"); //默认异常 } if(a==3) { throw new myException2("构造参数"); //抛出自定义异常 } }catch(RemoteException e) { System.out.println("异常:" + e.getMessage()); }catch(myException2 e) { System.out.println("异常:我自己的异常"); }catch(Exception e) //如果这个在catch(myException2 e)之前的话 这里就不会被执行 { System.out.println("异常:" + e.getMessage()); }finally { System.out.println("这里的代码总会执行"); } } } /* * 所有异常都必须是 Throwable 的子类。 * 如果希望写一个检查性异常类,则需要继承 Exception 类。 * 如果你想写一个运行时异常类,那么需要继承 RuntimeException 类。 * ***/ class myException2 extends Exception //自定义的异常类 需要继承 { public myException2(String str) { System.out.println("我自己的异常..." + str); } }
#解释
首先确定try和catch的用处 说说我的理解
在try代码块儿里可能出现异常 这里的异常出现的原因可以是很多的 比如数组越界 或者除数为零的情况 会抛出不同的异常(抛出什么异常可以看这里有完整的讲解:http://www.runoob.com/java/java-exceptions.html)
一旦抛出异常 该代码块儿里面的代码就不执行了
会跳转到相对应的catch代码块儿 并且执行里面的代码
如果可能抛出不同的异常 则自动匹配对应的catch代码块儿
但是finally代码块儿一定会执行无论是否有异常
#运行结果
#遇到的问题
1. 如果自定义了异常类 那么抛出的自定义异常所对应的catch块一定要在自定义异常类的catch块的前面 否则的话自定义异常所对应的catch块不会执行 报错
2. 不能在一个代码块里抛出两个异常 因为下面的异常不可能执行到 因为抛出一个异常之后 就跳转到catch里面了 会报错
3. finally代码块儿一定会执行无论是否有异常
如果有错误 请在下面留言 提醒一下 谢谢
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库