Java异常处理和设计

Java项目构建基础:统一结果,统一异常,统一日志 统一结果返回统一结果的一般形式结果类枚举统一结果类控制层返回统一异常处理@ControllerAdvice自定义全局异常类统一异常处理器控制层展示统一日志收集Logback配置日志收集异常信息是否响应成功;响应状态码;状态码描述;响应数据其他标识符前三者可定义结果枚举,如:success,code,message 统一结果类 第5个属于自定义返回,利用前4者可定义统一返回对象注意:外接只可以调用统一返回类的方法,不可以直接创建,影刺构造器私有;内置静态方法,返回对象;为便于自定义统一 阅读详情

Java异常处理和设计

  在程序设计中,进行异常处理是非常关键和重要的一部分。一个程序的异常处理框架的好坏直接影响到整个项目的代码质量以及后期维护成本和难度。试想一下,如果一个项目从头到尾没有考虑过异常处理,当程序出错从哪里寻找出错的根源?但是如果一个项目异常处理设计地过多,又会严重影响到代码质量以及程序的性能。因此,如何高效简洁地设计异常处理是一门艺术,本文下面先讲述Java异常机制最基础的知识,然后给出在进行Java异常处理设计时的几个建议。

  若有不正之处,请多多谅解和指正,不胜感激。

  请尊重作者劳动成果,转载请标明转载地址:http://www.cnblogs.com/dolphin0520/p/3769804.html

  以下是本文的目录大纲:

  一.什么是异常
  二.Java中如何处理异常
  三.深刻理解try,catch,finally,throws,throw五个关键字
  四.在类继承的时候,方法覆盖时如何进行异常抛出声明
  五.异常处理和设计的几个建议

一.什么是异常                                                                              

  异常的英文单词是exception,字面翻译就是“意外、例外”的意思,也就是非正常情况。事实上,异常本质上是程序上的错误,包括程序逻辑错误和系统错误。比如使用空的引用、数组下标越界、内存溢出错误等,这些都是意外的情况,背离我们程序本身的意图。错误在我们编写程序的过程中会经常发生,包括编译期间和运行期间的错误,在编译期间出现的错误有编译器帮助我们一起修正,然而运行期间的错误便不是编译器力所能及了,并且运行期间的错误往往是难以预料的。假若程序在运行期间出现了错误,如果置之不理,程序便会终止或直接导致系统崩溃,显然这不是我们希望看到的结果。因此,如何对运行期间出现的错误进行处理和补救呢?Java提供了异常机制来进行处理,通过异常机制来处理程序运行期间出现的错误。通过异常机制,我们可以更好地提升程序的健壮性。

  在Java中异常被当做对象来处理,根类是java.lang.Throwable类,在Java中定义了很多异常类(如OutOfMemoryError、NullPointerException、IndexOutOfBoundsException等),这些异常类分为两大类:Error和Exception。

  Error是无法处理的异常,比如OutOfMemoryError,一般发生这种异常,JVM会选择终止程序。因此我们编写程序时不需要关心这类异常。

  Exception,也就是我们经常见到的一些异常情况,比如NullPointerException、IndexOutOfBoundsException,这些异常是我们可以处理的异常。

  Exception类的异常包括checked exception和unchecked exception(unchecked exception也称运行时异常RuntimeException,当然这里的运行时异常并不是前面我所说的运行期间的异常,只是Java中用运行时异常这个术语来表示,Exception类的异常都是在运行期间发生的)。

  unchecked exception(非检查异常),也称运行时异常(RuntimeException),比如常见的NullPointerException、IndexOutOfBoundsException。对于运行时异常,java编译器不要求必须进行异常捕获处理或者抛出声明,由程序员自行决定。

  checked exception(检查异常),也称非运行时异常(运行时异常以外的异常就是非运行时异常),java编译器强制程序员必须进行捕获处理,比如常见的IOExeption和SQLException。对于非运行时异常如果不进行捕获或者抛出声明处理,编译都不会通过。

  在Java中,异常类的结构层次图如下图所示:

  

  在Java中,所有异常类的父类是Throwable类,Error类是error类型异常的父类,Exception类是exception类型异常的父类,RuntimeException类是所有运行时异常的父类,RuntimeException以外的并且继承Exception的类是非运行时异常。

  典型的RuntimeException包括NullPointerException、IndexOutOfBoundsException、IllegalArgumentException等。

  典型的非RuntimeException包括IOException、SQLException等。

二.Java中如何处理异常                                                                 

   在Java中如果需要处理异常,必须先对异常进行捕获,然后再对异常情况进行处理。如何对可能发生异常的代码进行异常捕获和处理呢?使用try和catch关键字即可,如下面一段代码所示:

1
2
3
4
5
6
7
try  {
   File file =  new  File( "d:/a.txt" );
   if (!file.exists())
     file.createNewFile();
}  catch  (IOException e) {
   // TODO: handle exception
}

  被try块包围的代码说明这段代码可能会发生异常,一旦发生异常,异常便会被catch捕获到,然后需要在catch块中进行异常处理。

  这是一种处理异常的方式。在Java中还提供了另一种异常处理方式即抛出异常,顾名思义,也就是说一旦发生异常,我把这个异常抛出去,让调用者去进行处理,自己不进行具体的处理,此时需要用到throw和throws关键字。 

  下面看一个示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public  class  Main {
     public  static  void  main(String[] args) {
         try  {
             createFile();
         }  catch  (Exception e) {
             // TODO: handle exception
         }
     }
     
     public  static  void  createFile()  throws  IOException{
         File file =  new  File( "d:/a.txt" );
         if (!file.exists())
             file.createNewFile();
     }
}

  这段代码和上面一段代码的区别是,在实际的createFile方法中并没有捕获异常,而是用throws关键字声明抛出异常,即告知这个方法的调用者此方法可能会抛出IOException。那么在main方法中调用createFile方法的时候,采用try...catch块进行了异常捕获处理。

  当然还可以采用throw关键字手动来抛出异常对象。下面看一个例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public  class  Main {
     public  static  void  main(String[] args) {
         try  {
             int [] data =  new  int []{ 1 , 2 , 3 };
             System.out.println(getDataByIndex(- 1 ,data));
         }  catch  (Exception e) {
             System.out.println(e.getMessage());
         }
         
     }
     
     public  static  int  getDataByIndex( int  index, int [] data) {
         if (index< 0 ||index>=data.length)
             throw  new  ArrayIndexOutOfBoundsException( "数组下标越界" );
         return  data[index];
     }
}

  然后在catch块中进行捕获。

  也就说在Java中进行异常处理的话,对于可能会发生异常的代码,可以选择三种方法来进行异常处理:

  1)对代码块用try..catch进行异常捕获处理;

  2)在 该代码的方法体外用throws进行抛出声明,告知此方法的调用者这段代码可能会出现这些异常,你需要谨慎处理。此时有两种情况:

    如果声明抛出的异常是非运行时异常,此方法的调用者必须显示地用try..catch块进行捕获或者继续向上层抛出异常。

    如果声明抛出的异常是运行时异常,此方法的调用者可以选择地进行异常捕获处理。

  3)在代码块用throw手动抛出一个异常对象,此时也有两种情况,跟2)中的类似:

    如果抛出的异常对象是非运行时异常,此方法的调用者必须显示地用try..catch块进行捕获或者继续向上层抛出异常。

    如果抛出的异常对象是运行时异常,此方法的调用者可以选择地进行异常捕获处理。

  (如果最终将异常抛给main方法,则相当于交给jvm自动处理,此时jvm会简单地打印异常信息)

三.深刻理解try,catch,finally,throws,throw五个关键字                   

   下面我们来看一下异常机制中五个关键字的用法以及需要注意的地方。

1.try,catch,finally

  try关键字用来包围可能会出现异常的逻辑代码,它单独无法使用,必须配合catch或者finally使用。Java编译器允许的组合使用形式只有以下三种形式:

  try...catch...;       try....finally......;    try....catch...finally...

  当然catch块可以有多个,注意try块只能有一个,finally块是可选的(但是最多只能有一个finally块)。

  三个块执行的顺序为try—>catch—>finally。

  当然如果没有发生异常,则catch块不会执行。但是finally块无论在什么情况下都是会执行的(这点要非常注意,因此部分情况下,都会将释放资源的操作放在finally块中进行)。

  在有多个catch块的时候,是按照catch块的先后顺序进行匹配的,一旦异常类型被一个catch块匹配,则不会与后面的catch块进行匹配。

  在使用try..catch..finally块的时候,注意千万不要在finally块中使用return,因为finally中的return会覆盖已有的返回值。下面看一个例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import  java.io.FileInputStream;
import  java.io.FileNotFoundException;
import  java.io.IOException;
 
 
public  class  Main {
     public  static  void  main(String[] args) {
         String str =  new  Main().openFile();
         System.out.println(str);
         
     }
     
     public  String openFile() {
         try  {
             FileInputStream inputStream =  new  FileInputStream( "d:/a.txt" );
             int  ch = inputStream.read();
             System.out.println( "aaa" );
             return  "step1" ;
         }  catch  (FileNotFoundException e) {
             System.out.println( "file not found" );
             return  "step2" ;
         } catch  (IOException e) {
             System.out.println( "io exception" );
             return  "step3" ;
         } finally {
             System.out.println( "finally block" );
             //return "finally";
         }
     }
}

  这段程序的输出结果为:

  可以看出,在try块中发生FileNotFoundException之后,就跳到第一个catch块,打印"file not found"信息,并将"step2"赋值给返回值,然后执行finally块,最后将返回值返回。

  从这个例子说明,无论try块或者catch块中是否包含return语句,都会执行finally块。

  如果将这个程序稍微修改一下,将finally块中的return语句注释去掉,运行结果是:

  

  最后打印出的是"finally",返回值被重新覆盖了。

  因此如果方法有返回值,切忌不要再finally中使用return,这样会使得程序结构变得混乱。

 2.throws和thow关键字

  1)throws出现在方法的声明中,表示该方法可能会抛出的异常,然后交给上层调用它的方法程序处理,允许throws后面跟着多个异常类型;

  2)一般会用于程序出现某种逻辑时程序员主动抛出某种特定类型的异常。throw只会出现在方法体中,当方法在执行过程中遇到异常情况时,将异常信息封装为异常对象,然后throw出去。throw关键字的一个非常重要的作用就是 异常类型的转换(会在后面阐述道)。

  throws表示出现异常的一种可能性,并不一定会发生这些异常;throw则是抛出了异常,执行throw则一定抛出了某种异常对象。两者都是消极处理异常的方式(这里的消极并不是说这种方式不好),只是抛出或者可能抛出异常,但是不会由方法去处理异常,真正的处理异常由此方法的上层调用处理。

四.在类继承的时候,方法覆盖时如何进行异常抛出声明                        

   本小节讨论子类重写父类方法的时候,如何确定异常抛出声明的类型。下面是三点原则:

  1)父类的方法没有声明异常,子类在重写该方法的时候不能声明异常;

  2)如果父类的方法声明一个异常exception1,则子类在重写该方法的时候声明的异常不能是exception1的父类;

  3)如果父类的方法声明的异常类型只有非运行时异常(运行时异常),则子类在重写该方法的时候声明的异常也只能有非运行时异常(运行时异常),不能含有运行时异常(非运行时异常)。

  

五.异常处理和设计的几个建议                                                         

   以下是根据前人总结的一些异常处理的建议:

1.只在必要使用异常的地方才使用异常,不要用异常去控制程序的流程

  谨慎地使用异常,异常捕获的代价非常高昂,异常使用过多会严重影响程序的性能。如果在程序中能够用if语句和Boolean变量来进行逻辑判断,那么尽量减少异常的使用,从而避免不必要的异常捕获和处理。比如下面这段经典的程序:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public  void  useExceptionsForFlowControl() {  
   try  {  
   while  ( true ) {  
     increaseCount();  
     }  
   }  catch  (MaximumCountReachedException ex) {  
   }  
   //Continue execution  
}  
    
public  void  increaseCount()  throws  MaximumCountReachedException {  
   if  (count >=  5000 )  
     throw  new  MaximumCountReachedException();  
}

  上边的useExceptionsForFlowControl()用一个无限循环来增加count直到抛出异常,这种做法并没有说让代码不易读,而是使得程序执行效率降低。

2.切忌使用空catch块

  在捕获了异常之后什么都不做,相当于忽略了这个异常。千万不要使用空的catch块,空的catch块意味着你在程序中隐藏了错误和异常,并且很可能导致程序出现不可控的执行结果。如果你非常肯定捕获到的异常不会以任何方式对程序造成影响,最好用Log日志将该异常进行记录,以便日后方便更新和维护。

3.检查异常和非检查异常的选择

  一旦你决定抛出异常,你就要决定抛出什么异常。这里面的主要问题就是抛出检查异常还是非检查异常。

  检查异常导致了太多的try…catch代码,可能有很多检查异常对开发人员来说是无法合理地进行处理的,比如SQLException,而开发人员却不得不去进行try…catch,这样就会导致经常出现这样一种情况:逻辑代码只有很少的几行,而进行异常捕获和处理的代码却有很多行。这样不仅导致逻辑代码阅读起来晦涩难懂,而且降低了程序的性能。

  我个人建议尽量避免检查异常的使用,如果确实该异常情况的出现很普遍,需要提醒调用者注意处理的话,就使用检查异常;否则使用非检查异常。

  因此,在一般情况下,我觉得尽量将检查异常转变为非检查异常交给上层处理。

4.注意catch块的顺序

  不要把上层类的异常放在最前面的catch块。比如下面这段代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
try  {
         FileInputStream inputStream =  new  FileInputStream( "d:/a.txt" );
         int  ch = inputStream.read();
         System.out.println( "aaa" );
         return  "step1" ;
     }  catch  (IOException e) {
        System.out.println( "io exception" );        
          return  "step2" ;
     } catch  (FileNotFoundException e) {
         System.out.println( "file not found" );          
         return  "step3" ;
     } finally {
         System.out.println( "finally block" );
         //return "finally";
     }

  

  第二个catch的FileNotFoundException将永远不会被捕获到,因为FileNotFoundException是IOException的子类。

5.不要将提供给用户看的信息放在异常信息里

  比如下面这段代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public  class  Main {
     public  static  void  main(String[] args) {
         try  {
             String user =  null ;
             String pwd =  null ;
             login(user,pwd);
         }  catch  (Exception e) {
             System.out.println(e.getMessage());
         }
         
     }
     
     public  static  void  login(String user,String pwd) {
         if (user== null ||pwd== null )
             throw  new  NullPointerException( "用户名或者密码为空" );
         //...
     }
}

  展示给用户错误提示信息最好不要跟程序混淆一起,比较好的方式是将所有错误提示信息放在一个配置文件中统一管理。

6.避免多次在日志信息中记录同一个异常

  只在异常最开始发生的地方进行日志信息记录。很多情况下异常都是层层向上跑出的,如果在每次向上抛出的时候,都Log到日志系统中,则会导致无从查找异常发生的根源。

7. 异常处理尽量放在高层进行

  尽量将异常统一抛给上层调用者,由上层调用者统一之时如何进行处理。如果在每个出现异常的地方都直接进行处理,会导致程序异常处理流程混乱,不利于后期维护和异常错误排查。由上层统一进行处理会使得整个程序的流程清晰易懂。

8. 在finally中释放资源

  如果有使用文件读取、网络操作以及数据库操作等,记得在finally中释放资源。这样不仅会使得程序占用更少的资源,也会避免不必要的由于资源未释放而发生的异常情况。                                    

参考资料:http://blessht.iteye.com/blog/908286

     http://www.oschina.net/translate/10-exception-handling-best-practices-in-java-programming

       http://blog.youkuaiyun.com/snow_fox_yaya/article/details/1823205

       http://www.iteye.com/topic/72170

       http://www.blogjava.net/gdws/archive/2010/04/25/319342.html

       http://www.2cto.com/kf/201403/284166.html

       http://www.iteye.com/topic/857443

     http://developer.51cto.com/art/200808/85625.htm

     http://www.cnblogs.com/JavaVillage/articles/384483.html

     http://tech.e800.com.cn/articles/2009/79/1247105040929_1.html

     http://blog.youkuaiyun.com/zhouyong80/article/details/1907799

     http://blog.youkuaiyun.com/luoweifu/article/details/10721543                                  

     《Effective Java中文版》   

AutosarMCAL开发——基于EB MCU驱动 本文为博主个人学习总结记录,如有不正,欢迎指正。 阅读详情

相关推荐

多模态RAG实战:为LLM装上视觉之眼,实现图文混合文档智能问答

检索增强生成(RAG)技术通过结合外部知识库,有效缓解了大语言模型(LLM)的幻觉问题,并扩展了其知识边界。其核心原理是将文档切分、向量化后存入向量数据库,在问答时通过语义检索召回相关上下文,辅助LLM生成更精准的答案。这项技术的核心价值在于,它为大模型应用提供了一种低成本、高效率的知识注入与实时更新方案,广泛应用于智能客服、知识库问答、文档分析等场景。随着应用深入,纯文本RAG在处理产品手册、学术论文、设计图纸等富含视觉信息的文档时面临瓶颈。本文聚焦的**多模态RAG**和**视觉理解**技术,正是为了解

weixin_30698527的博客 722

Java中如何统一处理异常

在Springboot项目中如何统一处理代码中的异常,即使发生异常依然能按照我们特定的格式返回给前端

weixin_44009147的博客 3734

从零开始:如何用PSINS工具箱构建你的第一个IMU误差模型

本文详细介绍了如何使用严恭敏教授开发的PSINS工具箱构建IMU误差模型,涵盖从基础参数设置到高级误差建模的全过程。通过imuerrset函数配置陀螺零偏、随机游走等核心参数,并结合实战案例展示消费级MEMS器件的误差建模方法,帮助用户提升惯性导航系统的精度与可靠性。

weixin_29284885的博客 322

【JAVA】项目实战功能——统一异常处理,全局异常处理器

全局异常处理器是一种在应用程序中集中处理异常的机制。它允许在应用程序的任何地方抛出异常时,通过集中的异常处理器进行捕获、记录和处理,而不是在每个可能抛出异常的地方都进行单独处理。在Java应用中,特别是在使用Spring框架的项目中,全局异常处理器通常通过实现 HandlerExceptionResolver 接口、使用 @ControllerAdvice 注解或实现 ErrorController 接口来实现。提示:以下是本篇文章正文内容,下面案例可供参考。

weixin_47142014的博客 2121

程序员实战:DINOv3 权重文件下载与本地化部署全流程指南

Meta开源的DINOv3视觉大模型凭借70亿参数和17亿图像训练,在语义分割、目标检测等任务表现优异。本文详解预训练权重的获取渠道、校验方法和加载实践。开发者可通过HuggingFace或GitHub获取不同版本权重,包括针对服务器端的ViT系列和边缘设备的ConvNeXt系列。文章提供MD5校验代码确保文件完整性,并给出PyTorch和Transformers两种加载方式。特别强调7B模型需16GB GPU内存,建议根据硬件条件选择合适版本,如边缘设备使用ConvNeXt-Tiny。最后指出DINOv3

xiugou3365的博客 5904

WS2812呼吸灯效果实战:用STM32的PWM+DMA实现流畅渐变(附完整代码)

本文详细介绍了如何使用STM32的PWM+DMA技术实现WS2812呼吸灯效果,提供完整的代码示例和调试技巧。通过PWM波形编码和DMA传输机制,解决了传统IO模拟控制方式的高CPU占用问题,实现了流畅的LED渐变效果,适用于各种嵌入式开发场景。

weixin_30566063的博客 452

Java统一异常处理--实战篇

文章目录背景什么是统一异常处理目标统一异常处理实战用 Assert(断言) 替换 throw exceptionAssert善解人意的Enum定义统一异常处理器类异常处理器说明handleServletExceptionhandleBindExceptionhandleValidExceptionhandleBusinessException、handleBaseExceptionhandleException异于常人的404统一返回结果验证统一异常处理主要代码开始验证捕获自定义异常捕获进入 Control

Apple_Boy的博客 4812

构造地貌研究入门:手把手教你用ArcGIS插件CalHypso分析流域地貌形态

本文详细介绍了如何使用ArcGIS插件CalHypso进行流域地貌形态分析,包括工具安装、数据预处理、HI曲线生成及结果解读等关键步骤。通过实战操作,帮助读者掌握面积高程积分(HI)曲线的应用技巧,为构造地貌研究提供量化工具。

weixin_33704234的博客 105

深入解析Java异常处理和设计

在程序设计中,进行异常处理是非常关键和重要的一部分。一个程序的异常处理框架的好坏直接影响到整个项目的代码质量以及后期维护成本和难度。试想一下,如果一个项目从头到尾没有考虑过异常处理,当程序出错从哪里寻找出错的根源?但是如果一个项目异常处理设计地过多,又会严重影响到代码质量以及程序的性能。因此,如何高效简洁地设计异常处理是一门艺术,本文下面先讲述Java异常机制最基础的知识,然后给出在进行Java异常处理设计时的几个建议。 一.什么是异常 异常的英文单词是exception,字面翻译就是“意外、例外”的意.

shayukaifa的博客 124

Docker环境下onlyOffice 7.5.1破解版部署全攻略(含ARM架构适配)

本文提供了在Docker环境中部署OnlyOffice 7.5.1破解版的完整实战指南。内容涵盖x86与ARM架构服务器的详细部署步骤、环境配置、持久化存储设置以及生产环境下的安全与性能优化。重点解决了ARM架构适配的常见问题,并分享了使用Docker Compose进行服务编排和日常维护的技巧,帮助用户快速搭建私有化文档协作平台。

redis7keeper的博客 353

基于STM32避障/循迹/蓝牙遥控小车的硬件与软件底层设计

1、实现2m的自动直线行驶,要求左右偏移不大于10cm。2、车载显示屏显示车辆当前行驶速度或车辆运行时间,当前方20cm内出现障碍物时显示与前方障碍物的距离,车每次转弯蜂鸣器报警,同时通过左右指示灯指示转弯方向。3、依次驶过障碍物①②③④,且不触碰障碍物。4、成功进行调头转弯,行驶过程中车轮不碾压黑实线。5、在车道指定位置停车且不越界。6、通过红外、蓝牙、WiFi等任意一种方式实现对小车的控制,使其前进、后退、左转、右转。

2301_78758161的博客 1万+

java try的用法_Java异常处理和设计

在程序设计中,进行异常处理是非常关键和重要的一部分。一个程序的异常处理框架的好坏直接影响到整个项目的代码质量以及后期维护成本和难度。试想一下,如果一个项目从头到尾没有考虑过异常处理,当程序出错从哪里寻找出错的根源?但是如果一个项目异常处理设计地过多,又会严重影响到代码质量以及程序的性能。因此,如何高效简洁地设计异常处理是一门艺术,本文下面先讲述Java异常机制最基础的知识,然后给出在进行Java异...

weixin_39607090的博客 3948

EMB电子机械制动系统和EHB电子液压制动系统控制功能的对比

EMB电子机械制动系统相比EHB液压制动系统具有显著优势:响应速度更快(<100ms)、控制精度更高(±2N·m)、能实现单轮独立控制,支持0.1%级制动力调节。在ABS、ESC等安全功能上表现更优,制动平顺性和NVH性能更好,同时提升能量回收效率15%-20%。特别适合智能驾驶需求,可使AEB等系统响应时间缩短50ms,紧急制动距离减少1米以上。EMB系统完美契合高阶自动驾驶对快速响应和精准控制的要求。

m0_59012156的博客 885

【Java 基础你一定要掌握的知识点】Java异常处理和设计

异常(exception)是在运行程序时产生的一种异常情况,已经成为了衡量一门语言是否成熟的标准之一。 一、什么是异常 程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常。 那如果程序产生异常,是任程序自生自灭,立刻退出终止,还是输出错误给用户?Java 提供了更加优秀的解决办法:异常处理机制。 Java 通过面向对象的方法来处理异常。在一个方法的运行过程中,如果发生了异常,则这个方法会产生代表该异常的一个对象,并把它交给运行时的系统,运行时系统寻找相应的代码来处理这一异

~~~~~~~BUG FLY~~~~~~~~~ 619

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

java异常处理和设计

以下是本文的目录大纲:   一.什么是异常   二.Java中如何处理异常   三.深刻理解try,catch,finally,throws,throw五个关键字   四.在类继承的时候,方法覆盖时如何进行异常抛出声明   五.异常处理和设计的几个建议 一.什么是异常 异常的英文单词是exception,字面翻译就是“意外、例外”的意思,也就是非正常情况。事实上,异常本质上是程序上的错误,包括程序...

oakscript的博客 215

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

java异常处理设计_Java异常处理和设计

Java异常处理和设计在程序设计中,进行异常处理是非常关键和重要的一部分。一个程序的异常处理框架的好坏直接影响到整个项目的代码质量以及后期维护成本和难度。试想一下,如果一个项目从头到尾没有考虑过异常处理,当程序出错从哪里寻找出错的根源?但是如果一个项目异常处理设计地过多,又会严重影响到代码质量以及程序的性能。因此,如何高效简洁地设计异常处理是一门艺术,本文下面先讲述Java异常机制最基础的知识,然...

weixin_35645652的博客 230

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

java出错处理设计_Java异常处理和设计

Java异常处理和设计在程序设计中,进行异常处理是非常关键和重要的一部分。一个程序的异常处理框架的好坏直 接影响到整个项目的代码质量以及后期维护成本和难度。试想一下,如果一个项目从头到尾没有考虑过异常处理,当程序出错从哪里寻找出错的根源?但是如果一个 项目异常处理设计地过多,又会严重影响到代码质量以及程序的性能。因此,如何高效简洁地设计异常处理是一门艺术,本文下面先讲述Java异常机制最基础的 知...

weixin_32602775的博客 706
上一篇: JVM的内存区域划分
下一篇: Java 提高篇 - 抽象类与接口
鹿晗的晗
博客等级 码龄16年 22粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值