Discuss / Java / 不知道理解的对不对

不知道理解的对不对

Topic source

董小姐cv

#1 Created at ... [Delete] [Delete and Lock User]

师傅们看一哈我理解的对不对如有问题请及时指出互相学习谢谢

异常作用:个人理解异常就是一个加强程序健壮性、后续排查问题的机制

异常体系:RuntimeException异常及其子类java编译器没有强制要求进行处理(具体处不处理看情况),非RuntimeException异常及其子类是强制要求处理的

常规异常处理场景:个人理解可以分两种情况:处理try-catch(也可以处理一部分把剩余问题做一个异常转换抛出去异常信息要完整)不处理:抛出去并声明异常让调用者去处理但是异常信息要完整

常见的异常组合:try-catch-finally(捕捉异常并处理关闭一些必要的资源)、try-finally-throws(只进行捕捉异常并关闭资源声明异常让调用者处理)、throw-throws(抛出非RuntimeException异常及其子类并声明这种上层调用者必须处理或者接着抛出去、也可以抛出RuntimeException异常及其子类上层调用者根据情况处理或者不处理)

董小姐cv

#2 Created at ... [Delete] [Delete and Lock User]

师傅们还有一个问题就是需要抛出什么样的异常啊,怎么进行判断例如我在一个文件里写入信息结果在写入的时候文件被人给删除了这个需要抛出什么异常,还有这个和简单的if判断有什么区别吗像刚刚的场景我可以直接用if就能做一个判断啊到时候我把错误信息直接写到日志文件里就行了为什么需要异常呢

师傅们还有一个问题就是需要抛出什么样的异常啊,怎么进行判断例如我在一个文件里写入信息结果在写入的时候文件被人给删除了这个需要抛出什么异常,还有这个和简单的if判断有什么区别吗像刚刚的场景我可以直接用if就能做一个判断啊到时候我把错误信息直接写到日志文件里就行了为什么需要异常呢

  1. 首先不是需要抛出什么异常,而是你提供的方法要声明会出现什么异常。这样调用者(包括你自己)再使用的时候就会做一些措施。你自己使用的时候一两个方法记得住,成千上万的方法哪里知道会有什么问题。别人使用时更麻烦,所以声明是必要的。
  2. 这个问题就很厉害了,得老师傅才能讲得清楚,我大概讲下个人观点。系统与系统之间(windiws,linux等)也不同,一般情况下进程占用不会写入失败。若真的有问题就用到这节课的内容了,捕获到异常之后重命名xxx.bak重新写入。
  3. if是可以判断,是流程控制。但是if判断的是表达式,是true false。
//刚刚的场景,你是可以使用if来控制程序进来。
if(salary<0 || rate<0){ 
  System.out.println(1/0); //但是我这个异常你要怎么打印到日志文件中?你需要捕获到这个异常.
}

Joker.fu_95

#4 Created at ... [Delete] [Delete and Lock User]

多线程问题

Joker.fu_95

#5 Created at ... [Delete] [Delete and Lock User]

你既然要捕获异常,ide都会给你提示具体是啥异常啊,你那被删除了,这种算是运行时异常,别人不删除你不会出现异常啊


  • 1

Reply