首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

《Java开发手册》

【强制】多线程并行处理定时任务时,Timer运行多个 TimeTask时,只要其中之一没有捕获 抛出的异常,其它任务便会自动终止运行,如果在处理定时任务时使用 ScheduledExecutorService...说明:这个变量是针对一个线程内所有操作共享的,所以设置为静态变量,所有此类实例共享此静态变 量,也就是说在类第一次被使用时装载,只分配一块存储空间,所有此类的对象(只要是这个线程内定义 的)都可以操控这个变量...【推荐】尽量用英文来描述日志错误信息,如果日志中的错误信息用英文描述不清楚的话使 用中文描述即可,否则容易产生歧义。 三、单元测试 【强制】好的单元测试必须遵守 AIR原则。...说明:单元测试在线上运行时,感觉像空气(AIR)一样并不存在,但在测试质量的保障上,却是非常关 键的。好的单元测试宏观上来说,具有自动化、独立性、可重复执行的特点。...⚫ A:Automatic(自动化) ⚫ I:Independent(独立性) ⚫ R:Repeatable(可重复) 【推荐】编写单元测试代码遵守 BCDE原则,以保证被测试模块的交付质量。

2K10

java开发手册黄山版_码出高效java开发手册pdf

【强制】多线程并行处理定时任务时,Timer运行多个 TimeTask时,只要其中之一没有捕获 抛出的异常,其它任务便会自动终止运行,如果在处理定时任务时使用 ScheduledExecutorService...说明:这个变量是针对一个线程内所有操作共享的,所以设置为静态变量,所有此类实例共享此静态变 量,也就是说在类第一次被使用时装载,只分配一块存储空间,所有此类的对象(只要是这个线程内定义 的)都可以操控这个变量...【推荐】尽量用英文来描述日志错误信息,如果日志中的错误信息用英文描述不清楚的话使 用中文描述即可,否则容易产生歧义。 三、单元测试 【强制】好的单元测试必须遵守 AIR原则。...说明:单元测试在线上运行时,感觉像空气(AIR)一样并不存在,但在测试质量的保障上,却是非常关 键的。好的单元测试宏观上来说,具有自动化、独立性、可重复执行的特点。...【参考】为了更方便地进行单元测试,业务代码应避免以下情况: ⚫ 构造方法中做的事情过多。 ⚫ 存在过多的全局变量和静态方法。 ⚫ 存在过多的外部依赖。 ⚫ 存在过多的条件语句。

1.6K50
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Java异常体系、UncaughtExceptionHandler、Spring MVC统一异常处理、Spring Boot统一异常处理

    Error用来表示程序底层或硬件有关的错误,这种错误和程序本身无关,如常见的NoClassDefFoundError。这种异常和程序本身无关,不需要检查,属于非受检异常。...Exception下面派生RuntimeException和其他异常,其中RuntimeException表示运行时异常,也属于非受检异常。在编译时可以不需要强制检查的异常,不需要显式捕捉或抛出。...这里直接给出一些结论: 受检异常,需要使用try来包裹可能会抛出异常的代码块,catch用于捕获异常并处理异常的代码块,常见的处理策略包括:打印错误日志、抛出自定义业务异常、释放资源、设置局部变量等 受检异常...减少(无法杜绝)NPE的方法就是不停地空判断,或使用Optional类。...,即catch语句块为空; 捕获异常后的日志打印规范,如记录错误类和方法,记录详细的错误堆栈stacktrace方便排查问题; 使用Try-With-Resource语句,实现AutoCloseable

    14810

    避开NullPointerException的10条建议

    后续若也没有为该变量赋值,则当使用这个变量里的内容时,便会抛出 NPE。...对空对象调用静态方法或类方法时,不会报 NPE,因为静态方法不需要实例来调用任何方法; 访问或更改空对象上的任何变量或字段时; 抛出异常时抛出 null; 数组为 null 时,访问数组长度; 数组为...null 安全的方法和库 开源库的方法通常都了非空校验,例如 Apache common 库中的 StringUtils 工具类中的 isBlank()、 isNumeric() 等方法,使用时不必担心...那我们在使用第三方库时,一定要了解它是否是 null 安全的,如果不是,则需要我们自己做好非空校验。...空对象是设计的一种特殊实例,为方法提供默认的行为,例如 Collections中的 EMPTY_List,我们仍能使用它的 size(),会返回 0,而不会抛出 NPE。

    2.1K30

    魔鬼在细节里

    10、多线程并行处理定时任务,Timer运行多个timeTask,只要其中一个没有捕获抛出的异常,其他任务便终止,使用ScheduleExecutorService没有这种情况。...11、使用CountDownLatch进行异步转同步操作,每个线程退出前必须调用countDown方法,线程执行代码注意catch异常确保countDown方法被执行到,避免主线程无法执行至await方法...null 5)对于Session中获取的数据,进行NPE检查 6)禁止级联调用 .get().get(), 推荐使用Optional 9、公司对外提供的服务或者开放接口必须使用错误码,应用内部推荐异常抛出...三、单元测试 1、单元测试必须遵守:自动化、独立性(单个case不依赖)、可重复性 2、单元测试之间独立,不互相依赖 3、单元测试粒度足够小,但是要有度,例如:getter/setter这样的就不用在写单元测试...11、单元测试不建议在项目发布后补单元测试, 12、避免以下情况: )构造方法中做的事情太多 )存在过多的全局变量和静态方法 )存在过多的依赖 )存在过多的条件语句 使用卫语句、策略模式、状态模式重构

    91940

    【软件开发规范一】《Java开发规范》

    null值时会抛出NPE异常。...【强制】多线程并行处理定时任务时,Timer运行多个TimeTask时,只要其中之一没有捕获抛出的异常,其它任务便会自动终止运行,使用ScheduledExecutorService则没有这个问题。...这个变量是针对一个线程内所有操作共享的,所以设置为静态变量,所有此类实例共享 此静态变量 ,也就是说在类第一次被使用时装载,只分配一块存储空间,所有此类的对象(只 要是这个线程内定义的)都可以操控这个变量...【参考】对于公司外的http/api开放接口必须使用“错误码”;而应用内部推荐异常抛出;跨应用间RPC调用优先考虑使用Result方式,封装isSuccess()方法、“错误码”、“错误简短信息”。 ...A:Automatic(自动化) I:Independent(独立性) R:Repeatable(可重复) 2. 【强制】单元测试应该是全自动执行的,并且非交互式的。

    2.2K42

    阿里巴巴Java开发手册(华山版)

    【强制】 多线程并行处理定时任务时, Timer 运行多个 TimeTask 时,只要其中之一没有捕获 抛出的异常,其它任务便会自动终止运行, 如果在处理定时任务时使用 ScheduledExecutorService...说明: 这个变量是针对一个线程内所有操作共享的,所以设置为静态变量,所有此类实例共享此静态变 量,也就是说在类第一次被使用时装载,只分配一块存储空间,所有此类的对象(只要是这个线程内定义 的)都可以操控这个变量...【参考】 对于公司外的 http/api 开放接口必须使用“错误码” ;而应用内部推荐异常抛出; 跨应用间 RPC 调用优先考虑使用 Result 方式,封装 isSuccess()方法、 “错误码”...⚫ A: Automatic(自动化) ⚫ I: Independent(独立性) ⚫ R: Repeatable(可重复) 【强制】 单元测试应该是全自动执行的,并且非交互式的。...测试用例通常是被定期执行的, 执行过程必须完全自动化才有意义。输出结果需要人工检查的测试不是一个好的单元测试。

    1.1K30

    阿里编程规范 pdf_阿里前端开发规范

    5、OOP规约 避免通过类的对象引用访问此类的静态变量或静态方法,无谓增加编译器解析成本,直接用类名来访问即可。 所有的覆写方法,必须加@ Override 注解。...在代码中使用“抛异常”还是“返回错误码”,对于公司外的 http/api 开放接口必须使用“错误码”;而应用内部推荐异常抛出;跨应用间 RPC 调用优先考虑使用 Result 方式,封装 isSuccess...A:Automatic(自动化) I:Independent(独立性) R:Repeatable(可重复) 单元测试应该是全自动执行的,并且非交互式的。...测试框架通常是定期执行的,执行过程必须完全自动化才有意义。输出结果需要人工检查的测试不是一个好的单元测试。...D:Design,与设计文档相结合,来编写单元测试。 E:Error,强制错误信息输入(如:非法数据、异常流程、非业务允许输入等),并得到预期的结果。

    1.3K10

    Java开发手册——嵩山版(清幽现云山,虚静出内功)

    说明: 这个变量是针对一个线程内所有操作共享的,所以设置为静态变量,所有此类实例共享此静态变量, 也就是说在类第一次被使用时装载,只分配一块存储空间,所有此类的对象(只要是这个线程内定义的)都可...好的单元测试宏观上来说,具有自动化、独立性、可重复执行的特点。...【强制】 单元测试应该是全自动执行的,并且非交互式的。测试用例通常是被定期执行的,执 行过程必须完全自动化才有意义。输出结果需要人工检查的测试不是一个好的单元测试。...【参考】 为了更方便地进行单元测试,业务代码应避免以下情况: ⚫ 构造方法中做的事情过多。 ⚫ 存在过多的全局变量和静态方法。 ⚫ 存在过多的外部依赖。...CAS ( Compare And Swap ):解决多线程并行情况下使用锁造成性能损耗的一种机制,这是 硬件实现的原子操作。CAS 操作包含三个操作数:内存位置、预期原值和新值。

    1.5K20

    Java开发手册阅读笔记

    WEDNESDAY(3), THURSDAY(4), FRIDAY(5), SATURDAY(6), SUNDAY(7);} (三)代码格式 (四)OOP 规约 【强制】避免通过一个类的对象引用访问此类的静态变量或静态方法...【强制】使用工具类Arrays.asList()把数组转换成集合时,不能使用其修改集合相关的方法,它的 add/remove/clear 方法会抛出 UnsupportedOperationException...最外层的业务使用者,必须处理异常,将其转化为用户可以理解的 内容。 【推荐】防止 NPE,是程序员的基本修养....【参考】在代码中使用“抛异常”还是“返回错误码”,对于公司外的 http/api 开放接口必须 使用“错误码”;而应用内部推荐异常抛出;跨应用间 RPC 调用优先考虑使用 Result 方式,封 装...好的单元测试宏观上来说,具有自动化、独立性、可重复执行的特点。

    1K40

    Selenium面试题

    4、用于非功能自动化的常用自动化测试工具有哪些? 5、什么是Selenium? 6、Selenium有哪些不同的组成部分? 7、Selenium支持哪些编程语言、浏览器和操作系统?...2、自动化测试的优势是什么? 自动化测试的一些基本优势如下: 自动化测试支持对应用程序的功能和性能测试。 它支持重复测试用例的执行。 它有助于并行执行。 它有助于测试大型测试矩阵。...它提高了准确性,因为没有人为错误的机会。 它可以节省时间和金钱。 3、用于功能自动化的常用自动化测试工具有哪些?...4、用于非功能自动化的常用自动化测试工具有哪些? 一些常用的非功能自动化自动化测试工具列表如下: Load Runner,由 Hp 提供。 JMeter,由 Apache 提供。...它也是从网页验证消息、标签和错误等的广泛使用的命令之一。

    8.6K12

    UI自动化问题汇总

    浏览器通过请求的内容执行对应动作 (5)浏览器再把执行的动作结果通过浏览器驱动程序返回给测试脚本 补充Selenium原理: 我们使用Selenium实现自动化测试,主要需要3个东西 (1)测试脚本,可以是...如果它为假,则会抛出 AssertError 并且包含错误信息。 1. 自动化测试用例从哪里来的 答: 从手工测试用例中抽取 1. 你觉得自动化最大的缺陷是什么?你们平时工作中是怎么利用自动化的呢?...,减少测试用例耦合度,因为多线程的执行顺序是不受控制的; 3.多用 try 捕捉,处理异常; 4.尽量使用测试专用环境,避免其他类型的测试同时进行,对数据造成干扰。...(4) 测试脚本的评审方法,可以参照产品源代码的评审方法。 (5) 如何评估自动化测试的结果、如何判断自动化测试是否成功、由谁参与评估等问题。 1. PO设计模式原理?...执行自动化测试脚本标准是什么 答: 统一命名约定。 每10行代码3行注释 足够的缩进。 强大的错误处理和恢复方案 尽可能使用框架 1.

    3.5K61

    我,一个10年老程序员,最近才开始用 Java8 新特性

    一个 interface 中可以有多个方法被它们修饰,这 2 个修饰符的区别主要也是普通方法和静态方法的区别。 default修饰的方法,是普通实例方法,可以用this调用,可以被子类继承、重写。...static修饰的方法,使用上和一般类静态方法一样。但它不能被子类继承,只能用Interface调用。 我们来看一个实际的例子。...流类型 stream 串行流 parallelStream 并行流,可多线程执行 常用方法 接下来我们看java.util.stream.Stream常用方法 /** * 返回一个串行流 */ default...说明 filter 中的方法并没有立刻执行,而是等调用count()方法后才执行。 上面都是串行 Stream 的实例。并行 parallelStream 在使用方法上和串行一样。...他建议使用 Optional 解决 NPE(java.lang.NumberFormatException)问题,它就是为 NPE 而生的,其中可以包含空值或非空值。

    89720

    JUnit 5和Selenium基础(三)

    使用JUnit 5并行测试执行 JUnit 5带有内置的并行测试执行支持。下面的命令将并行运行TodoMvcTests的测试方法: ....但是在某些情况下测试执行需要依赖特定顺序。 默认情况下,在JUnit 5中,测试方法的执行在构建之间是无序的,因此非确定性的。...这可以通过清除@AfterEach方法中存储待办事项的本地存储来完成。我还创建了一个字段driver,该字段保留所有测试中使用的驱动程序对象实例。.../gradlew clean test --tests *.todomvc.TodoMvcTests 但浏览器实例并行测试 如果你现在尝试使用JUnit 5并行执行测试,在并行执行中,每种方法都需要单独的驱动程序实例...为了解决这个问题,需要运行测试配置并行执行,为了让顶级类并行运行,但方法在同一线程中。 只需复制TodoMvcTests类,然后尝试以下命令: .

    1.1K20

    框架分析(11)-测试框架

    这使得开发人员可以模拟用户在浏览器上的各种操作,进行全面的测试。 测试报告 Selenium可以生成详细的测试报告,包括测试用例的执行结果、错误信息和截图等。...这使得开发人员可以清晰地了解测试的结果,及时发现和解决问题。 并行执行 Selenium支持并行执行测试,可以同时在多个浏览器上执行测试脚本,提高测试的效率和速度。...不支持桌面应用程序和移动应用程序 Selenium主要用于Web应用程序的测试,对于桌面应用程序和移动应用程序的测试支持相对较弱,需要使用其他工具或框架来进行测试。...它提供了一组注解和断言方法,以及一个执行测试的运行器。 框架主要特性 注解支持 JUnit使用注解来标记测试方法和测试类。...异常测试支持 JUnit允许测试方法标记为期望抛出特定异常。如果测试方法确实抛出了期望的异常,则测试将被视为通过。如果测试方法没有抛出异常或者抛出了其他异常,则测试将被视为失败。

    24020

    程序里怎么表达“没有”

    但是null的确存在问题(特别是在静态语言开发者的眼中),它会让类型系统的消除程序错误的功能失效。...静态类型语言强调“尽可能的在编译期找到程序的错误”,而null这个奇葩的存在无疑是与这个目标对着干。...Java也类似,你可以 Integer a = null; 这可以绕开编译器,然后有可能在运行时得到一个NPE。 于是静态语言们开始逐渐采用一个新的方法,即用Optional来明确的表达”可能没有“。...doSomething(); 通过这个语法,如果nullableUser是null的话,表达式就会直接返回null,而不是抛出一个NPE。...最后的最后,不管是静态语言,还是动态语言,都应该好好写测试。测试才是能确认程序不出问题的最终手段。

    1.8K31

    懵逼...

    为什么 return null 的时候,程序不会抛出 NPE 呢? 好像有千言万语,又不知从何说起。 我把它归结到常识问题这一类,要对一个常识问题进行解释,还真的不太好组织语言。...它安安静静的待在某个地方(局部变量、成员字段、静态字段)不会有任何问题;它从一个地方被搬运到另一个地方也不会有任何问题(变量赋值、返回值等)。...趣味题:在Java语言里,只使用Java语言及标准库的功能而不依赖第三方库,检查一个引用obj是否为null并在null时抛NPE的代码是什么? 答案:obj.getClass()。...这是因为getClass()是java.lang.Object类上的方法,因而无论什么引用类型都可以使用。这在Java源码层面和在Java字节码层面上都是最短的。...说真的,我也认为在程序里面引入 return null 不太好,加入这样一行代码后势必会带来一个非空判断,是不太优雅的。 还不如抛出一个异常。

    31120

    Selenium异常集锦

    如果在测试计算机上没有IME支持,则会为每个与IME相关的方法抛出ImeNotAvailableException。...更好的做法是使用Selenium测试自动化代码中的适当等待时间(以毫秒为单位)来验证被测网页是否加载全完。...InvalidSessionIdException 如果在Selenium测试自动化实现中使用的会话ID无效,即不在当前活动的会话列表中,则抛出此异常。...在调用ActionChains类的move()方法之前,应该始终检查我们尝试移动的位置,并仅在屏幕上存在该位置时才执行该操作。...异常是使用try ... except块进行处理的,其中try代码块中代码可以存在错误或者抛出异常,except代码块可以帮助处理错误,并且无论try块是否引发错误,都将执行可选的finally代码块。

    5.4K20
    领券