`
轮回记忆
  • 浏览: 10466 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

断言位置的选择:谁犯错谁异常(转载)

 
阅读更多
  比如某gen_server:
Erlang代码  收藏代码

    ... 
     
    hello(A,B,C) when is_atom(A),is_integer(B),is_binary(C) -> 
        gen_server:cast(?SERVER,{hello, A, B, C}). 
     
    handle_cast({hello, A, B, C}, State} -> 
         .... 
         {noreply, State}. 
     
    ... 





     将断言加在hello/3上显然比加在handle_cast/2上合理。

     如果将断言加在handle_cast上,调用发起方出错将造成此server无故重启甚至失效,无法为其他进程提供服务,而作为出错的调用方却不受影响。

     将断言加于hello上,调用方将因自己的错误发生异常,从而正确的报告异常或者拥有重启恢复的机会,也不会影响目标服务和其他进程。
分享到:
评论

相关推荐

    Java断言(assert)

    Java断言(assert) Java断言是一种 debugging 机制,允许开发者在Java...Java断言是一种强大的调试工具,可以帮助开发者快速地检测程序中的错误和异常。但是,断言应该谨慎使用,不然可能会影响程序的性能和可靠性。

    业务异常提示处理 springboot+Assert(自定义断言)

    本项目“业务异常提示处理 springboot+Assert(自定义断言)”着重于利用Spring Boot的特性来构建高效、易维护的业务逻辑,并通过自定义断言提升代码的可读性和可维护性。下面我们将详细探讨这些知识点。 1. **Spring...

    JMETER 断言几种方式

    你可以通过以下设置来配置BeanShell断言: - **Name**: 设置断言的名称,以便于识别。 - **Comments**: 添加注释,解释断言的作用。 - **Reset bsh.interpreter before each call**: 决定是否在每次调用前重置...

    Jmeter中断言的使用方法.doc

    2. 选择响应断言:在Jmeter中,可以选择响应断言来判断返回结果。一般选择响应文本,然后选择匹配规则,可以选择“包含”或“匹配”。 3. 添加断言内容:在添加断言时,需要添加要响应的内容,可以是某个字符串、...

    java异常处理机制示例(java抛出异常、捕获、断言)

    总结来说,Java异常处理机制提供了一种结构化的方法来处理程序运行时的错误,通过try-catch-finally结构捕获和处理异常,同时,利用断言进行内部逻辑验证,以及日志记录来跟踪程序行为。这样的机制增强了代码的健壮...

    Python异常和错误实践手册 新手必备

    4. AssertionError:断言语句引发的异常 5. AttributeError:对象没有某个属性时引发的异常 6. BufferError:缓存 buffer 操作错误引发的异常 7. EOFError:文件结尾时引发的异常 8. ImportError:导入模块错误引发...

    JAVA程序设计——异常和断言

    JAVA程序设计中的异常和断言是程序开发过程中的重要概念,它们帮助开发者处理程序运行时可能出现的问题,确保程序的稳定性和可靠性。 异常处理是JAVA语言中的一个关键特性,用于处理程序执行过程中出现的非正常情况...

    SCJP 310-055 题库4 异常和断言

    根据给定文件的信息,我们可以深入探讨SCJP 310-055考试中的异常处理和断言相关知识点。此部分题库主要聚焦于Java语言中的异常处理机制以及如何正确地使用断言来确保代码质量。 ### 异常处理 在Java中,异常处理是...

    2022年游戏软件测试培训讲义(共31张PPT).pptx

    硬断言是指在软件中使用断言来检测错误和异常情况,而软断言是指在软件中使用断言来检测可能出现的错误和异常情况。 6.断言的优点:断言可以快速地发现软件问题,并对问题进行定位和解决,从而提高软件的可靠性和可...

    python:playwright 自动等待和断言(csdn)————程序.pdf

    如果在指定的超时时间内元素仍未满足条件,Playwright会抛出`TimeoutError`异常。 接着,我们来看断言。在上面的代码示例中,`assert page.title() == "百度一下,你就知道"`就是一个断言,用于验证页面标题是否...

    jmeter实例(json断言+参数化)

    首先,我们需要将查看结果树中的响应数据格式化为JSON格式,然后按照以下步骤配置JSON断言: 1. **格式化JSON数据**:将查看结果树中的响应数据复制到bejson等在线格式化工具中,确保其格式正确无误。 2. **定位...

    SystemVerilog断言的示例和参考.zip

    使用`assert_knowhow`和`assert_no_knowhow`可以处理断言失败时的异常情况。 9. **断言的使用时机**: - 在设计模块的初始化阶段,验证输入和输出的初始状态。 - 在关键操作之后,确认设计的响应正确。 - 在...

    浅析Java异常处理中断言的使用

    Java异常处理中的断言是一种强大的调试工具,它允许程序员在代码中插入检查点,以确保程序的特定条件在运行时始终为真。断言的概念基于一个假设:在编写代码时,我们对某些条件有一定的信心,认为它们在程序执行时...

    正则表达式 零宽断言

    这时我们可以使用负向零宽断言: ``` ab(?! [A-Z]) ``` 如果输入字符串为“ab c”,则匹配成功;但如果输入字符串为“abC”,则匹配失败。 #### 匹配原理详解 接下来,我们深入探讨正向和负向零宽断言的具体匹配...

    strikt,kotlin的断言库.zip

    - **丰富的断言**: `strikt`提供了各种各样的断言,包括基本类型、集合、日期时间、异常等的断言,满足不同测试需求。 - **与Kotlin集成**: 与Kotlin的语法和语义紧密集成,例如,可以使用空安全操作符和智能类型...

    Swift视频教程:Swift基础,断言

    return 0 // 这里仅作示例,实际上不应返回0,应抛出异常或错误 } // 进行除法运算 } ``` 学习和熟练掌握断言的使用,能够帮助开发者编写更健壮、更易于调试的代码。通过在Swift程序中适当使用断言,可以提高...

    Java中断言使用案例

    断言语句通常包含一个布尔表达式,如果该表达式为`false`,则表明出现了程序员没有预见到的情况,程序会抛出`AssertionError`异常。 2. **使用断言的好处**: - **简化调试**:断言有助于在开发过程中快速定位问题...

    学学Python_24语句_条件语句5(断言)

    1. **断言的基本用法**:如何在代码中插入`assert`语句,以及其在逻辑流程中的位置和作用。 2. **断言的调试价值**:在开发过程中,通过断言可以快速定位和修复代码中的错误,尤其是在处理复杂逻辑时。 3. **异常...

    python 实现selenium断言和验证的方法

    在进行验证时,通常会在 `assertEqual` 等断言方法的基础上添加异常处理机制,这样即使验证失败,测试也不会中断。 ```python from selenium import webdriver import unittest class TestBaidu(unittest.TestCase...

    .NET异常处理最佳实践

    14. **不确定时,抛出异常而非断言**:在发布版本中,`Debug.Assert`会被移除,因此在可能出错的地方抛出异常,而不是依赖断言检查。 遵循这些最佳实践,开发者可以编写出更健壮、易于维护的.NET代码,有效提升软件...

Global site tag (gtag.js) - Google Analytics